我有一个简单的静态网站 (foo.com),由 Apache2 提供。该静态网站有一个链接,可以访问使用 tomcat 提供的应用程序。为此,该链接只需指向 foo.com:8080/app
最终目标是避免使用端口号。我还想避免使用 mod_proxy 或 mod_jk,因为这两个内容(静态页面和应用程序)几乎没有关联,所以我认为这有点过头了。常见的用例是静态页面->应用程序 [永不回头]
以下是我考虑过的一些选择:
在另一台机器上运行该应用程序,并将其 IP 映射到子域(s1.foo.com)。然后在这台机器上使用 iptables 将 80 端口转发到 8080,这样 s1.foo.com/app 就可以正常工作了。
为一个服务器获取一个额外的 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 灵活性,那么同时运行两个服务器并不总是有意义的。