我在 Amazon AMI 上有一个与 apache2 一起运行的 tomcat。到目前为止,我的所有用户都通过在 URL 中输入端口号 8080 来访问我的 webapp,然后 tomcat 自动重定向到 8443。
但是现在我希望所有用户从 80/443 访问我的应用程序,因此我在 apache 上配置了 ssl,将端口 80 上的所有请求转发到 443,并将 443 转发到端口 8080。一切运行良好。
问题是,我所有现有用户的浏览器地址栏中都自动填充了 8443 端口号,而用户几乎只会访问该 url。因此,我想输入配置,将所有 8080/8443 流量重定向到 80 端口。
我尝试安装 iptables-services,但无法正确理解它。我还怀疑它是否会陷入无限的重定向循环,端口 8080->80->8080。所以请给我一个更合适的处理方法。
答案1
您可以重新配置 Tomcat 以监听其他端口,例如 8088,然后配置 Apache:
您的任何流量http://example.com,http://example.com:8080和https://example.com:8443重定向至https://example.com(即端口 443)。这些将不会传递到您的 Tomcat。
仅通过来自https://example.com(即端口 443)到 Tomcat 端口 8088。
这将解决您的重定向问题并强制使用 SSL。
或者,你可以使用以下方法完成上述所有操作AWS 应用程序负载均衡器- 它可以执行重定向、SSL 终止,并且只有来自端口 443 的 SSL 流量才能通过 Tomcat。额外的好处是您可以使用亚马逊证书管理器管理和更新您的 SSL 证书。
希望有帮助:)
答案2
您可以修改 server.xml 中的连接器,使 Tomcat 监听多个端口。然后该服务将在 80、443、8080 和 8443 上可用。
请注意,您似乎没有使用 mod_jk,也就是说,用户被发送到从 Apache httpd 到 Tomcat 安装的链接。使用 mod_jk,用户将始终连接到 httpd,后者会将请求转发到 Tomcat,从而消除 Tomcat 在 80/443 上的监听。两个 Web 服务器不能在同一台服务器上监听相同的端口。