我已经配置了一个带有 SSL 和反向代理的 Apache 服务器到 tomcat
<VirtualHost domain.com:1443>
[...]
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://local.com:8080/
ProxyPassReverse / http://local.com:8080
SSLEngine on
[...]
</VirtualHost>
Tomcat 正在监听 8080。问题是 tomcat 上的应用程序正在重定向请求(HTTP 302 临时移动)。例如,如果我使用 URL https://domain.com:1443/folder,反向代理启动请求 http://local.com:8080/folder,然后应用程序重定向到“/subfolder”,因此最终请求是:http://domain.com:1443/文件夹/子文件夹。结果是 400 错误请求错误代码,因为该请求是我的 SSL 端口上的 HTTP。
你知道我该如何解决这个问题吗?
提前致谢。
答案1
不要使用普通的 http 代理,而是使用proxy_ajp
。调整下面的示例以满足您的需求,即由您决定将所有内容代理到容器或仅代理命名空间:
ProxyRequests off
ProxyPassMatch ^/(your_app)(.*) ajp://localhost:8009/$1$2 ttl=120 ping=1
确保server.xml
您的配置中tomcat
包含 AJP 监听器。执行器是可选的。
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
<Connector executor="tomcatThreadPool"
port="8009" protocol="AJP/1.3"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />