尝试在几个后端IIS服务器前使用AAR作为反向代理。
分配给运行IIS / AAR的服务器的一个公共IP地址
然后设置出站URL重写规则以重定向到其中一个 几个后端服务器,具体取决于主机名。
有点工作,但总是返回后端服务器默认站点(不是映射到主机名的站点),所以看起来主机名(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>
但是唉总是会返回默认绑定 - 任何想法?
答案 0 :(得分:42)
这篇文章有答案 - Modifying headers with IIS7 Application Request Routing
需要启用preserveHostHeader - 无法在UI中看到你是如何做到这一点的,但这是有效的
从命令行运行此命令以更新Machine / webroot / apphost config
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost
答案 1 :(得分:2)
我的猜测是,当您重写URL时,您的服务器不允许您更改服务器变量HTTP_HOST
。
在应用网址重写的网站级别:
然后点击右侧标签上的Add...
链接,添加HTTP_HOST
变量:
答案 2 :(得分:0)