Apache的反向代理到IIS

时间:2016-12-20 21:03:35

标签: asp.net apache iis centos reverse-proxy

运行Apache 2.4.6的CentOS 7充当了面向互联网的中心前端Web服务器。因此,它有一些反向代理连接设置。他们都指向其他LAMP并且工作得很好。但是,我有一个IIS服务器运行其中一个.Net / ASP网站,只是不想正确加载。使用Apache下面的配置,IIS网站加载所有的html& css的东西。

<VirtualHost *:80>
    SeverName example.com
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass /extDirectory/ http://internalserver/internalDirectory/

    <Location /extDirectory/ >
        ProxyPassReverse http://internalserver/internalDirectory/
        Order allow,deny
        Allow from all
    </Location>

</VirtualHost>

然而,在外部访问网站时,看起来每个此屏幕截图都存在一个sessionID事故: External-gets-error

与在内部访问同一网站相比: internal-is-OK

Apache日志和我从IIS日志中收集的内容没有显示任何错误。我得到的唯一错误是在开发人员工具中使用IE的构建时,即使我已成功登录,也看到“未找到200个授权”。

1 个答案:

答案 0 :(得分:1)

我无法使用Apache解决这个问题,因为ASP.Net开发人员已经修复了他们的软件。这是他们的答复和解决方案:

  

Enterprise创建授权令牌,用于验证进入服务器的每个请求。每个AJAX请求都必须具有有效的身份验证令牌,否则将被拒绝。令牌的一部分是最终用户的IP地址。如果AJAX请求中的IP地址与原始登录请求不同,则令牌验证将失败,并且AJAX请求将被拒绝。 Enterprise v6.5.2通过按以下顺序查找三个特定HTTP标头来确定最终用户的IP地址:HTTP_X_CLUSTER_CLIENT_IP,HTTP_X_FORWARDED_FOR,REMOTE_ADDR。我们认为代理服务器可能正在为AJAX请求发送不同的IP地址,这会导致令牌验证失败并且AJAX请求被拒绝。

打开Enterprise的web.config并在顶部附近添加此行元素下方的这一行:

<add key="USER_HOST_ADDRESS" value="127.0.0.1" />

保存并关闭web.config,然后重新启动IIS。

就是这样。原来是ASP.NET问题而不是Apache。