首页 > 解决方案 > 设置防火墙规则以启用在具有两个不同主机名/ip:port 的同一台机器上运行 Apache2HttpServer 和 ApacheTomcat 9

问题描述

我有一个虚拟机 Linux Debian 10,有两个 Host-Only 网络接口,分别为 192.168.56.10 和 192.168.56.15,具有静态 IP 地址。Apache Tomcat 9 已安装,Apache2 Http Server 也已安装。我的目的是 Apache Tomcat 9 必须在192.168.56.15:8080上运行,而 Apache2 Http Server 必须在192.168.56.10:80上运行。我的 Linux 中的/etc/hosts文件是:

#

192.168.56.10 www.example.com

192.168.56.15 openam.example.com

#

C : \Windows\System32\drivers\etc\hosts是一样的。

简而言之,我正在尝试使用 Forgerock 的 AM 解决方案为身份和访问管理设置一个小型开发环境。该软件必须作为 .war 文件 (openam.war) 部署在 Tomcat /webapps 中,并将映射为openam.example.com,我希望该服务在 192.168.56.15:8080/openam上运行;

所以我的问题是我想要两个不同的服务响应两个不同的接口但在同一个虚拟机上运行。我希望只有当我输入192.168.56.15:8080openam.example.com:8080我收到来自 Tomcat 的响应,但如果我输入192.168.56.15:80openam.example.com:80 Apache Http Server 不会必须回应。Apache Http Server 必须仅在 192.168.56.10:80 或www.example.com上响应。

通过这种方式,我可以拥有两台不同的机器,一台使用 Web 服务器,一台使用应用程序服务器,响应两个不同的 IP 地址和主机名,但在同一台机器上运行。

感谢帮助!

标签: apachetomcatdebianweb-application-firewallforgerock

解决方案


你可以有 2 个 IP,但这样做有什么意义呢?

我发现为 VM 内的开发环境在同一台机器上为 2 个不同的服务(例如 1 个上的 tomcat / 另一个上的 HTTP 服务器)拥有 2 个单独的 IP 是毫无意义的。端口处理将由操作系统本身处理,并将请求路由到打开的端口。

请记住,默认情况下,浏览器会尝试在端口 80 上连接 http:// 调用 - 因此,除非您在 URL 中键入 8080,否则浏览器只会使用端口 80。

如果您不希望在端口 80 上调用 openam.example.com,最简单的方法是使用一个 htaccess 规则,该规则对包含 openam.example.com 的任何请求(或只是子域部分)在端口 80 上被重写为适当的 URL。


推荐阅读