【发布时间】:2016-09-19 11:14:18
【问题描述】:
好吧,我到处找,但如果有人知道我在哪里可以找到解决方案,很抱歉再次问这个问题。
我们正在寻求实施此解决方案: HTTP 客户端 -> Apache 2.4 反向代理 -> HTTP 服务器 => 工作正常 HTTPS 客户端 -> Apache 2.4 反向代理 -> HTTPS 服务器 => 工作正常
但是,当 HTTPS 服务器回复“302”重定向标头时,标头中的服务器名称不会转换为客户端已知的服务器名称。因此,由于 DNS 错误,客户端无法连接。
我们无法在 DNS 中添加后端服务器名称,因此我们需要该解决方案才能工作。
重要提示:同样适用于 HTTP。这意味着当服务器回复是HTTP中的“302”重定向头时,没有问题。即使重定向的目标是 HTTPS 链接,它也可以工作。所以不起作用的是从 HTTPS 重定向到 HTTPS。 后端网络服务器是 Tomcat。
问题是:在 HTTPS 标头中,重定向 URL 是“https://[backendname]/something.html”,但我们希望它是“https://[servername]/something.html”
我们已检查日志文件中没有错误(错误级别设置为“调试”)。
这是我们的虚拟站点配置:
<VirtualHost [reverse proxy IP]:443>
SSLEngine on
SSLProxyEngine on
SSLCertificateFile D:/Apache24/ssl/certs/servername.cer
SSLCertificateKeyFile D:/Apache24/ssl/private/servername.key
ServerName [servername]
ProxyPass / https://[backendname]:443/
ProxyPassReverseCookiePath / https://[backendname]:443/
ProxyPassReverse / https://[backendname]:443/
SetOutputFilter proxy-html
ProxyHTMLEnable On
ProxyHTMLURLMap https://[backendname] https://[servername]
ErrorLog D:/Apache24/logs/custom/[servername]_error.log
CustomLog D:/Apache24/logs/custom/[servername]_access.log combined
SetEnv nokeepalive ssl-unclean-shutdown
</VirtualHost>
问题相关的 Apache 激活模块:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule xml2enc_module modules/mod_xml2enc.so
因此,我们将不胜感激任何帮助完成这项工作。
谢谢。
【问题讨论】:
-
我最近发现我的 302 响应被缓存了,因为 Apache 插入了我不想要的缓存控制指令。我用“ExpiresActive Off”解决了我的问题。
-
我也遇到过类似的问题,通过在重定向 url 和/或表单操作属性中添加或删除前导斜杠来解决。
-
谢谢。我试过了,它奏效了。
标签: apache tomcat redirect https proxy