我有一个正在运行的 tomcat 应用程序,它已经具有以下从 HTTP 到 HTTPs 的重定向规则:
<Connector executor="tomcatThreadPool"
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
是否可以添加一个异常(exception)/规则,一个特定的 HTTP 请求(http://www.example.com)将被重定向到另一个特定的地址,指定一个端口(比如 https://www.example.com:8443/test),而不更改/删除上面的连接器?
最佳答案
您可以通过将此添加到 tomcat_dir/conf/web.xml
的末尾来对部署到 tomcat 的每个应用程序执行此操作:
<security-constraint>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<!-- auth-constraint goes here if you requre authentication -->
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
因此您不必在您的网络应用程序的 web.xml 上更改它。
这应该可行,假设您已经在另一个端口(通常是 443)上运行 https。如果不这样做,请确保您的 tomcat_dir/conf/server.xml
如下所示:
<!-- Default tomcat connector, changed the redirectPort from 8443 to 443 -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<!-- To make https work on port 443 -->
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol"/>
<SSLHostConfig>
<Certificate certificateKeyFile="/your/own/privkey.pem"
certificateFile="/eyour/own/cert.pem"
certificateChainFile="/your/own/chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
关于apache - 将 HTTP 重定向到 HTTPS :PORT in Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33208796/