带有 SSL 的 Apache ProxyPass

带有 SSL 的 Apache ProxyPass

我想通过非 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_sslmod_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安装了吗?

相关内容