我有一个运行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 Internal Server Error错误信息。查看错误日志:
[Wed Jul 20 08:35:34 2011] [error] [client 76.168.166.70] SSL Proxy请求www.wileybits.com:80,但未启用[提示:SSLProxyEngine] [Wed Jul 20 08:35:34 2011] [error] proxy:HTTPS:未能为74.166.186.70:443(win.acme.com)启用ssl支持
请注意,代理请求似乎是针对错误的域名(wileybits)...它显示的域名也由我的Apache服务器托管,但我不知道为什么它出现在acme.com的日志中(可能是反向DNS查找?)
无论如何,我错过了什么?
提前感谢 - ekkis
p.s. 主机名和地址已更改以保护隐私 :)
* 更新 *
使用:
RewriteRule ^/(.*) https://win.acme.com/$1 [R,L]
看起来它能正常工作,但是当然,Windows的主机名会变得可见,这在我的情况下是不可接受的。
我也尝试过(而不是使用mod_rewrite):
ProxyRequests Off
ProxyPass / https://win.acme.com/
但是出现了相同的错误