Apache ReverseProxyPass 重定向到 http 而不是 https

Apache ReverseProxyPass 重定向到 http 而不是 https

我使用 apache mod_proxy 设置了反向代理:

<VirtualHost *:443>
   ServerName reverse.server.com  
   ProxyPass / http://10.1.9.11:3000/
   ProxyPassReverse / http://10.1.9.11:3000/
   ProxyPreserveHost on
   ...snip ssl stuff...
</VirtualHost>

在大多数情况下,这种方法都行得通。问题是当内部服务器进行重定向时。虽然 proxypassreverse 应该能够捕获位置,而且似乎可以,但它会重定向到http://reverse.server.com而不是https://reverse.server.com。因此它只工作了一半,地址正确更改,但协议保持为内部服务器。

我不清楚它为什么这样做,因为代理连接是 SSL - 有什么想法吗?

答案1

ProxyPassReverse无法修复此类重定向。有两种方法可以解决此问题:

  • 对内部站点使用 HTTPS。例如ProxyPass / https:...ProxyPassReverse / https:(实际上,在您的情况下不需要最后一个)。
  • 在反向代理中使用 mod_headers:Header edit Location ^http: https:
  • 在反向代理中使用 mod_rewrite 来更改重定向。

答案2

我刚刚遇到了同样的问题。我们找到了 2 个想法来尝试,不知道它是否真的有效:1/ 使用 RequestHeader 设置 X-Forwarded-Protocol "https" =>http://toroid.org/ams/etc/mixing-http-and-https

2/ 使用变量 httpsindicatorheader(它是 websphere)通过应用服务器指示初始请求是 https。然后每个重定向都将在 https 上

相关内容