我需要配置Tomcat 9服务器以将http重定向到https通信。

我试过了:


将连接器用于http端口,并具有指向安全连接器的redirectPort属性。
在web.xml的底部包括一个安全约束link,该约束对不使用虚拟主机的其他Tomcat服务器有效


连接器

<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />

<Connector
        port="443"
        protocol="org.apache.coyote.http11.Http11AprProtocol"
        secure="true"
        scheme="https"
        maxThreads="200"
        SSLEnabled="true"
        maxSpareThreads="75"
        maxHttpHeaderSize="8192"
        acceptCount="100"
        enableLookups="false"
        disableUploadTimeout="true"
        defaultSSLHostConfigName="example1.com">
                        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
                        <SSLHostConfig hostName="example1.com">
                                        <Certificate
                                        certificateKeystoreFile="www_example1_com.jks"
                                        certificateKeystorePassword="…” />
                        </SSLHostConfig>
                        <SSLHostConfig hostName="example2.com">
                                        <Certificate
                                        certificateKeystoreFile="www_example2_com.jks"
                                        certificateKeystorePassword="…” />
                        </SSLHostConfig>
        </Connector>


安全约束

<security-constraint>
   <web-resource-collection>
      <web-resource-name>Entire Application</web-resource-name>
      <url-pattern>/*</url-pattern>
   </web-resource-collection>
   <user-data-constraint>
      <transport-guarantee>CONFIDENTIAL</transport-guarantee>
   </user-data-constraint>
</security-constraint>


server.xml中的主机配置

      <!-- example1.com -->
      <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve"
               directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>

      <!-- example2.com -->
      <Host name="example2.com" appBase="website-webapps" unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve"
               directory="website-logs"
               prefix="website_access_log."
               suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>



https://example2.com-作品
https://www.example2.com-作品
www.example2.com-不起作用
example2.com-不起作用

最佳答案

端口80未对我的服务器上的外部流量开放,因此重定向永远不会发生。 http流量没有到达服务器。

通过添加允许请求到达端口80的入站规则来解决此问题。

09-25 18:24