一台具有两个IP的机器上的Tomcat和Apache


0

我有一个与Apache2一起使用的简单静态网站(foo.com)。静态网站上有一个链接,可链接到使用tomcat服务的应用程序。为此,链接仅指向foo.com:8080/app

最终目标是避免拥有端口号。我还想避免使用mod_proxy或mod_jk,因为这两个内容(静态页面和应用程序)是完全不相关的,因此我认为这会太过分了。常见的用例是静态页面-> app [永远不会回来]

这是我考虑过的一些选项:

  1. 在另一台计算机上运行该应用程序,然后将其IP映射到一个子域(s1.foo.com)。然后在这台机器上,使用iptables将80端口转发到8080,以便s1.foo.com/app可以正常工作。

  2. 获取一台服务器的其他IP地址。有一个指向该IP地址的子域,然后使用iptables将IP:8080转发到IP:80。

我的问题是1)这些明智吗?2)我应该遵循哪些步骤,以免弄乱规则链?3)还有更好的选择吗?

谢谢,

Answers:


1

最好的选择是为服务器获取第二个IP,并将其设置为IP别名。第一个IP在网络接口eth0上设置,下一个IP在eth0:0上设置(第三个IP是eth0:1,依此类推)。

这是一个一般指南,但是,特别是对于Linux发行版,查找最新说明可能会更容易:

http://www.cyberciti.biz/faq/linux-creating-or-adding-new-network-alias-to-a-network-card-nic/

完成此操作后,将Apache设置为绑定到第一个IP(如现在),将Tomcat设置为绑定到新IP,例如

eth0   - 192.168.0.1 - Apache
eth0:0 - 192.168.0.2 - Tomcat

然后将DNS设置为:

example.org        - 192.168.0.1
tomcat.example.org - 192.168.0.2

完全不需要使用:8080,也不需要任何重定向/ IP表转发。链接仅指向http://tomcat.example.org/whatever/

请注意,这是一个新的网络接口,因此您将需要检查IPTables规则和:

a)当您不再使用它时,请关闭第一个接口上的端口8080

b)确保检查/设置IPTables以锁定新IP地址,以便仅允许使用端口80。


感谢您的详细回答。唯一的问题是,这将需要我将tomcat绑定到端口80,因此具有root特权,我在几个地方读到的内容是安全禁止。
Elmasto

噢,真让人伤心,我什至没有想到现代服务器无法像Apache那样将其自身锁定下来,但是看起来Java / Tomcat却无法。是的,这是安全性。
TessellatingHeckler,2010年

0

假设使用Linux?只需配置一个虚拟网络接口,并让Tomcat监听该接口。您认为合适的DNS映射。


我仍然需要进行端口重定向,不是吗?无论dns映射如何,我都不想拥有:8080。谢谢
Elmasto

@Elmasto:我认为您可以将Tomcat配置为在虚拟接口上使用端口80,因此不需要混乱的端口重定向。
史蒂文

正确的是,每个接口都已分配了TCP / UDP端口。在您的eth0上创建一个虚拟接口,您可以分配该进程以监听该接口上的80。
JE队列

您需要确保将apache和tomcat配置为专门侦听一个IP地址,例如NameVirtualHost,不能使用,\*:80并且必须在Apache中指定Listen xx.xx.xx.xx:80,以便它仅侦听一个IP
DerfK 2010年

你们都如何将tomcat绑定到端口80?我继续阅读一般不建议这样做(因为tomcat将需要以root身份运行)。
Elmasto

0

使用tomcat在端口80侦听来同时服务静态和Web应用程序?如果您不需要Apache灵活性,那么运行两个服务器并不总是很有意义。


我可以这样做,但是这需要我以root用户身份运行tomcat(假设由于访问者数量少而忽略了从tomcat服务静态页面的性能反映)
Elmasto 2010年

使用jsvc或iptables。性能对于静态服务而言并不差。已测量。klawitter.de/tomcat80.html#jsvc
rubiojr
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.