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

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

我有一个简单的静态网站 (foo.com),由 Apache2 提供。该静态网站有一个链接,可以访问使用 tomcat 提供的应用程序。为此,该链接只需指向 foo.com:8080/app

最终目标是避免使用端口号。我还想避免使用 mod_proxy 或 mod_jk,因为这两个内容(静态页面和应用程序)几乎没有关联,所以我认为这有点过头了。常见的用例是静态页面->应用程序 [永不回头]

以下是我考虑过的一些选择:

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

  2. 为一个服务器获取一个额外的 IP 地址。让子域名指向该 IP 地址,然后使用 iptables 将 IP:8080 转发到 IP:80。

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

谢谢你,

答案1

最好的选择是为服务器获取第二个 IP,并将其设置为 IP 别名。第一个 IP 设置在网络接口 eth0 上,第二个设置在 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 进入。

答案2

假设是 Linux?只需配置一个虚拟网络接口并让 Tomcat 监听该接口。DNS 映射按您认为合适的方式进行。

答案3

使用在端口 80 上监听的 tomcat 来同时提供静态和 web 应用?如果您不需要 Apache 灵活性,那么同时运行两个服务器并不总是有意义的。

相关内容