我正在尝试设置从 apache 到 IIS 7 服务器的反向代理。
我已经设置了非常基本的代理规则。
<VirtualHost *:443>
ServerName MY_APPACHE_SERVER_NAME
SSLEngine on
SSLProxyEngine on
SSLCertificateFile /etc/ssl/certs/...
SSLCertificateKeyFile /etc/ssl/private/...
SSLCertificateChainFile /etc/ssl/certs/...
SSLProxyCheckPeerCN on
SSLProxyCheckPeerExpire on
ProxyPreserveHost On
ProxyPass / https://MY_IIS_SERVER_NAME/
ProxyPassReverse / https://MY_IIS_SERVER_NAME/
</VirtualHost>
如果我通过代理访问主页,则会收到 404 错误。
在 IIS 服务器端,在 C:\Windows\System32\LogFiles\HTTPERR\httperr.log 文件中,我可以看到传入呼叫和设置为 404 的响应
2015-03-27 15:07:36 184.73.82.33 42313 10.79.154.81 443 HTTP/1.1 GET / 404 - NotFound -
2015-03-27 15:07:52 184.73.82.33 42314 10.79.154.81 443 HTTP/1.1 GET / 404 - NotFound -
在http响应上我可以看到响应来自IIS服务器服务器:Microsoft-HTTPAPI/2.0
HTTP/1.1 404 Not Found
Date: Fri, 27 Mar 2015 15:07:52 GMT
Server: Microsoft-HTTPAPI/2.0
Content-Type: text/html; charset=us-ascii
Content-Length: 315
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
我不明白为什么在访问代理服务器时无法访问我的主页。任何帮助,将不胜感激。
Thanks.
发现我的问题,它是“ProxyPreserveHost On”行。它应该被设置为关闭。
IIS 服务器仅响应 MY_IIS_SERVER_NAME。由于我调用 MY_APPACHE_SERVER_NAME,该名称被转发到 IIS 服务器,而服务器无法识别该名称。因此出现 404 错误。
我的最终 apache 配置如下所示:
<VirtualHost *:443>
ServerName MY_APPACHE_SERVER_NAME
SSLEngine on
SSLProxyEngine on
SSLCertificateFile /etc/ssl/certs/...
SSLCertificateKeyFile /etc/ssl/private/...
SSLCertificateChainFile /etc/ssl/certs/...
ProxyPreserveHost Off
ProxyRequests Off
ProxyPass / https://MY_IIS_SERVER_NAME/
ProxyPassReverse / https://MY_IIS_SERVER_NAME/
</VirtualHost>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)