繁体   English   中英

Apache 反向代理到 IIS

[英]Apache Reverse Proxy to IIS

运行 Apache 2.4.6 的 CentOS 7 充当面向 Internet 的中央前端 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 事故: 外部获取错误

与内部访问同一站点相比: 内部没问题

Apache 日志和我可以从 IIS 日志中收集的内容没有显示任何错误。 我遇到的唯一错误是在开发人员工具中使用 IE 的 buil;t 并看到“200 Authorization not found”,即使我已成功登录。

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

企业创建授权令牌,用于对进入服务器的每个请求进行身份验证。 每个 AJAX 请求都必须具有有效的身份验证令牌,否则将被拒绝。 令牌的一部分是最终用户的 IP 地址。 如果 AJAX 请求中的 IP 地址与原始登录请求中的 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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM