我有一个奇怪的设置。它看起来像这样:
Browser ----------> HTTPs Proxy ------> Apache HTTP -----> Tomcat AJP
HTTPS HTTP AJP
Run Code Online (Sandbox Code Playgroud)
在 HTTPS 代理(一个非常愚蠢的代理)上,一个 URL 看起来像 https://proxy.domain.com/app。然后它使用 HTTP 隧道传输到 Apache,就像 http://apache.domain.com/app(传入主机 proxy.domain.com)。Apache 然后使用 AJP 协议在本地将请求通过隧道传输到 ajp://localhost:8009/app/。
有时应用服务器想要重定向请求的路径。例如,将 /app/ 重定向到 /app/webapp。因此,它将 302 发送回重定向路径的 apache - 可能类似于 ajp: //localhost:8009/app/webapp。Apache 然后将重定向 URL 重写为 http://proxy.domain.com/app/webapp。HTTPS 代理很笨,所以它不会分析重定向并将 http 更改为 https。
所以,我想弄清楚我是否可以配置 Apache 来重写 302 重定向 URL 以将用户发送到 https。
这是我目前在 Apache 的 https.conf 中的配置:
ProxyPreserveHost on
RewriteEngine on
RewriteRule ^/app$ /app/ [PT]
ProxyPass /app ajp://localhost:8009/app
Run Code Online (Sandbox Code Playgroud)
我尝试使用ProxyPassReverse,但无法弄清楚如何强制它使用 https 而不是 http 重写 302 …