我想通过非 SSL 站点代理来自 SSL 站点的请求。我的 Apache httpd.conf 如下所示:
<VirtualHost 1.2.3.4:80>
ServerName foo.com
ProxyPass / https://bar.com/
</VirtualHost>
因此,当我访问http://foo.com,我期望 Apache 发出请求https://bar.com并将其获取的页面发送给我。
相反,我收到 500 错误,并且在错误日志中,我看到:
[error] proxy: HTTPS: failed to enable ssl support for 4.3.2.1:443 (bar.com)
大概我这里漏掉了一个指令。可能是哪一个?
不用担心安全隐患。我完全了解其中的风险。
答案1
您将需要mod_ssl
,mod_proxy
以及可选的mod_rewrite
。根据您的发行版和 Apache 版本,您可能还必须检查mod_proxy_connect
和是否mod_proxy_http
也已加载。
启用 SSL 代理支持的指令位于 mod_ssl 中:
<VirtualHost 1.2.3.4:80>
ServerName foo.com
SSLProxyEngine On
SSLProxyCheckPeerCN on
SSLProxyCheckPeerExpire on
ProxyPass / https://secure.bar.com
ProxyPassReverse / https://secure.bar.com
</VirtualHost>
IIRC您还可以使用:
RewriteRule / https://secure.bar.com [P] # don't forget to setup SSLProxy* as well
答案2
在 Apache 1.x 中,mod_ssl
将修复 ProxyPass。您mod_ssl
安装了吗?