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'的设置,但我在谷歌上搜索时,无法弄清楚这个设置是什么,所以我查了一下。

以下设置。

server.xml


    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

目录

  1. 什么是重定向端口?
  2. 摘要

1. 什么是重定向端口?

事实证明,这似乎是一个设置,当你访问一个指定需要SSL的页面时,会重定向你。

如果server.xml的配置值是

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>” 声明传输约束:

web.xml


~删节~
    <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 的安全约束或反向代理配置一起验证。

■技术文章

查看全部技术文章。


■作者简介

查看作者简介。


■联系我们

就本文内容联系我们。