Tomcat的server.xml中的redirectPort设置是什么?
出版日期:
更新:
技术文章 > Tomcat的server.xml中的redirectPort设置是什么?
2026 状态和安全使用
结论: redirectPort 告诉非 TLS Tomcat 连接器在部署的 Web 应用程序的安全约束需要机密传输时将请求重定向到何处。它不会创建 TLS 连接器,不会为每个请求强制使用 HTTPS,也不会替换边缘代理重定向策略。
你将学到什么
<transport-guarantee>CONFIDENTIAL</transport-guarantee>如何激活容器管理的重定向。- 为什么目标端口必须对应于正常工作的 HTTPS 连接器或正确设计的代理拓扑。
- 直接 Tomcat TLS 与 Apache HTTP Server 或其他代理上的 TLS 终止有何不同。
适用人群:Java Web 管理员正在检查 Tomcat 连接器和应用程序安全约束设置。
截至 2026 年的适用情况:下面的 Tomcat 9 示例仍然是概念性的,但连接器属性和代理处理必须与您支持的 Tomcat 系列相匹配。通过故意配置受信任的代理标头来避免重定向循环和错误的方案。
安全注意事项:原始文章中的命令和配置示例尚未在当前生产环境中重新运行。应用之前,请在单独的测试环境中验证支持的版本、备份、访问控制和回滚步骤。
官方主要来源
概述。
当我在Tomcat的server.xml配置中查看端口设置时,有一个叫做'redirectPort'的设置,但我在谷歌上搜索时,无法弄清楚这个设置是什么,所以我查了一下。
以下设置。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
1. 什么是重定向端口?
事实证明,这似乎是一个设置,当你访问一个指定需要SSL的页面时,会重定向你。
如果server.xml的配置值是
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
当应用的安全约束要求机密传输时,Tomcat 会使用 HTTP Connector 的 redirectPort 生成 HTTPS 重定向目标。例如,8080 上的请求可以重定向到 8443。
该行为需要在 web.xml 中以 “<transport-guarantee>CONFIDENTIAL</transport-guarantee>” 声明传输约束:
~删节~
<security-constraint>
<web-resource-collection>
<web-resource-name>twx-portal</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
</web-app>
由于 url-pattern 为 "/",该约束要求所有匹配 URL 使用 SSL。redirectPort 只有在对应的 8443 Connector 已启用时才有效;默认值中出现 8443 并不表示该端口已经监听。
1-1. 基础
Tomcat 文档对上述结论的说明如下:
http://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html
「If you change the port number here, you should also change the value specified for the redirectPort attribute on the non-SSL connector. This allows Tomcat to automatically redirect users who attempt to access a page with a security constraint specifying that SSL is required, as required by the Servlet Specification.」
关键点是 redirectPort 本身不会强制全站使用 HTTPS;它只为需要 CONFIDENTIAL 传输的匹配资源提供目标端口。还必须启用对应的 TLS Connector,或由反向代理在外部终止 TLS 并正确传递协议与端口信息。
2. 摘要
redirectPort 应与实际可用的 HTTPS 入口保持一致,并与 web.xml 的安全约束或反向代理配置一起验证。