用SSL代理

我有一台运行Apache的Linux主机和一台运行IIS的Windows主机。 我有一个域指向Linux主机,并需要中继(代理)对IIS的请求; 因此,我在Apache中具有以下虚拟主机定义(工作得很好):

<VirtualHost 192.168.0.2:80> ServerName www.acme.com DocumentRoot /var/www/acme.com RewriteEngine On RewriteOptions Inherit RewriteRule ^/(.*) http://win.acme.com/$1 [P] </VirtualHost> 

现在我想添加SSL支持; 定义变成:

 <VirtualHost 192.168.0.2:443> ServerName www.acme.com DocumentRoot /var/www/acme.com GnuTLSEnable On GnuTLSPriorities NORMAL:%COMPAT GnuTLSCertificateFile /var/www/ssl/www.acme.com.crt GnuTLSKeyFile /var/www/ssl/www.acme.com.key RewriteEngine On RewriteOptions Inherit RewriteRule ^/(.*) https://win.acme.com/$1 [P] </VirtualHost> 

我有两个Web服务器上有效和可信的证书,如果我访问https://win.acme.com一切都很好,但是,当我访问https://www.acme.com我得到一个500内部服务器错误消息。 查看错误日志显示:

[Wed Jul 20 08:35:34 2011] [error] [client 76.168.166.70]请求SSL代理www.wileybits.com:80但未启用[提示:SSLProxyEngine] [Wed Jul 20 08:35:34 2011] [error] proxy:HTTPS:无法启用ssl支持74.166.186.70:443(win.acme.com)

请注意,代理请求似乎是错误的域名(wileybits)…它显示的域也是由我的Apache服务器托pipe,但我不明白为什么它出现在acme.com的日志(一个反向DNS查找可能?)

无论如何,我错过了什么?

在此先感谢 – ekkis

ps的主机名和地址已被修改,以保护无辜的:)

*更新*

有:

 RewriteRule ^/(.*) https://win.acme.com/$1 [R,L] 

它似乎工作正常,但当然,Windows的主机名变得可见,这在我的情况下是不能接受的

我也试过(而不是mod_rewrite):

 ProxyRequests Off ProxyPass / https://win.acme.com/ 

但同样的错误

想通了…显然我可以这样做:

 SSLProxyEngine On RequestHeader set Front-End-Https "On" ProxyPass / https://win.acme.com/ ProxyPassReverse / https://win.acme.com/ CacheDisable * 

它工作得很好!

[解决scheme来自mikeg在3cx.org 上发布 ]

不知道这个错误的原因,但你可能希望你尝试使用Squid或Varnish来完成这个。 以前,我用Squid代理一个安全的Windows IIS实例没有问题。

对不起,我没有Apache的答案: – \