带有SSL的Apache ProxyPass


59

我想通过非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)

大概我在这里缺少指令。可能是哪个?

不用担心安全隐患。我完全了解风险。


您正在使用哪个版本的Apache?
山姆·哈利克

1
“别担心安全隐患。我完全理解风险。” -这是等同于“按住我的啤酒”的devops;)
埃里克·基加西

Answers:


70

您将需要mod_sslmod_proxy也可以选择mod_rewrite。根据您的发行版和Apache版本,您可能还必须检查mod_proxy_connectmod_proxy_http是否已加载。

启用S​​SL代理支持的指令位于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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.