我有一台运行 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 内部服务器错误消息。查看错误日志显示:
[2011 年 7 月 20 日星期三 08:35:34] [错误] [客户端 76.168.166.70] 为 www.wileybits.com:80 请求 SSL 代理但未启用 [提示:SSLProxyEngine] [2011 年 7 月 20 日星期三 08:35:34] [错误] 代理:HTTPS:无法为 74.166.186.70:443 (win.acme.com) 启用 ssl 支持
请注意代理请求似乎是针对错误的域(wileybits)...它显示的域也由我的 Apache 服务器托管,但我不明白为什么它会出现在 acme.com 的日志中(相反也许是 DNS 查询?)
无论如何,我错过了什么?
在此先感谢-ekkis
ps 主机名和地址已被更改以保护无辜者:)
* 更新 *
和:
RewriteRule ^/(.*) https://win.acme.com/$1 [R,L]
它似乎工作正常,但当然,Windows 的主机名变得可见,这在我的场景中是不可接受的
我也试过(而不是 mod_rewrite):
ProxyRequests Off
ProxyPass / https://win.acme.com/
但同样的错误