尝试在多个后端 IIS 服务器前面使用 AAR 作为反向代理。
有点工作,但总是返回后端服务器默认站点(不是映射到主机名的站点),因此看起来主机名(HTTP_HOST)没有从代理服务器传递到后端服务器。
(我已经通过编辑主机验证绕过反向代理,并且后端服务器返回绑定到主机标头的正确站点)
这是规则的示例(192.168.0.99 是内部服务器,site.myco.com 是主机名)
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://192.168.1.99/{R:1}" />
</rule>
</rules>
</rewrite>
尝试过放置服务器变量
<!-- Guessing server.myco.com is hard coded -->
<serverVariables>
<set name="HTTP_HOST" value="server.myco.com" />
</serverVariables>
<!-- Guessing picked up dynamically from incoming request host header -->
<serverVariables>
<set name="HTTP_HOST" value="{HTTP_HOST}" />
</serverVariables>
但可惜总是返回默认绑定 - 有什么想法吗?
这篇文章有答案——使用 IIS7 应用程序请求路由修改标头 https://stackoverflow.com/questions/1842885/modifying-headers-with-iis7-application-request-routing
需要启用preserveHostHeader - 无法看到如何在用户界面中执行此操作,但这有效
从命令行运行此命令以更新 Machine/webroot/apphost 配置
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)