【发布时间】:2015-07-18 05:42:39
【问题描述】:
我正在配置 apache 以将 SSL 请求代理到本地后端服务器。以下是虚拟主机的相关部分:
<VirtualHost *:443>
...
SSLEngine on
SSLCertificateFile /path/to/server.crt
SSLCertificateKeyFile /path/to/server.key
RewriteEngine On
<Proxy balancer://unicornservers>
BalancerMember http://127.0.0.1:8080
</Proxy>
# Redirect all non-static requests to unicorn
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://unicornservers%{REQUEST_URI} [P,QSA,L]
ProxyPassReverse / balancer://unicornservers/
ProxyPreserveHost on
...
</VirtualHost>
当我使用 curl 访问服务器 (curl -vk https://example.com) 时,后端服务器按照预期执行重定向到 /login。
问题是,apache 没有正确重写 Location 标头。它返回http://example.com/login 的位置,而不是https://example.com/login。
在我的配置中是否需要告诉 apache 使用 https 进行 ProxyPassReverse 重写?
【问题讨论】:
标签: apache mod-rewrite reverse-proxy mod-proxy mod-ssl