带有 SSL 的 Apache ProxyPass

带有 SSL 的 Apache ProxyPass

我有一个 QA 设置,它由多个内部开发服务器和一个全球可访问的配置机器组成,该机器设置为代理传递网络流量。对于非 SSL 请求,一切都运行正常,但我很难让 SSL 逻辑正常工作。以下是一些示例 vhost 块。

<VirtualHost 192.168.168.101:443>
    ProxyPreserveHost On
    SSLProxyEngine On
    ProxyPass / https://192.168.168.111/
    ServerName dev1.site.com
</VirtualHost>

<VirtualHost 192.168.168.101:80>
    ProxyPreserveHost On
    ProxyPass / http://192.168.168.111/
    ServerName dev1.site.com
</VirtualHost>


<VirtualHost 192.168.168.101:443>
    ProxyPreserveHost On
    SSLProxyEngine On
    ProxyPass / https://192.168.168.111/
    ServerName dev2.site.com
</VirtualHost>

<VirtualHost 192.168.168.101:80>
    ProxyPreserveHost On
    ProxyPass / http://192.168.168.111/
    ServerName dev2.site.com
</VirtualHost>

我最终在供应商的错误日志中看到以下错误。

[Fri Jan 28 12:50:59 2011] [warn] [client 1.2.3.4] proxy: no HTTP 0.9 request (with no host line) on incoming request and preserve host set forcing hostname to be dev1.site.com for uri /

以及目标 QA 机器的访问日志中的以下条目。

192.168.168.101 - - [22/Feb/2011:08:34:56 -0600] "\x16\x03\x01 / HTTP/1.1" 301 326 "-" "-"

答案1

virtualHost 定义完整吗?您忘记打开 SSL 引擎并指定密钥和证书等等...所以我猜想在 :443 处有一个没有 SSL 的普通 http 接收器。

答案2

我从来没有收到过那个特定的错误消息,但我可以看到您的设置中存在问题:您有两个虚拟主机在 192.168.168.101:443 上监听。

您无法使用 SSL 来执行此操作,因为 Apache 无法在解密之前查看 SSL 连接的内容,因此您的第二个 SSL 虚拟主机 dev2.site.com 将被忽略。

相关内容