从apache到IIS的反向代理始终以404失败

Ben*_*tte 2 apache iis proxy reverse-proxy http-status-code-404

我正在尝试设置从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>
Run Code Online (Sandbox Code Playgroud)

如果我通过代理访问主页,则会收到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 -
Run Code Online (Sandbox Code Playgroud)

在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
Run Code Online (Sandbox Code Playgroud)

我不明白为什么在访问代理服务器时无法获得主页。任何帮助,将不胜感激。

谢谢。

Ben*_*tte 6

发现我的问题,那是“ ProxyPreserveHost On”行。应该将其设置为OFF。

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>
Run Code Online (Sandbox Code Playgroud)