2013-02-12 23 views
21

尝试将AAR用作多个后端IIS服务器之前的反向代理。分配给运行IIS/AARIIS AAR - 针对反向代理的URL重写 - 如何发送HTTP_HOST

  • 然后出站URL重写规则服务器

    • 一个公网IP地址都设置重定向到依赖于主机 之一几个后端服务器。

    作品有点,但总是返回后端服务器默认站点(而不是一个映射到主机名),所以它看起来像主机名(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> 
    

    卜主机名) t alas总是返回默认绑定 - 任何想法?

  • 回答

    27

    这个帖子有答案 - Modifying headers with IIS7 Application Request Routing

    需要启用preserveHostHeader - 不能看你怎么做,在用户界面,但这个工程的命令行

    运行此更新机/ Webroot公司/ APPHOST配置

    %windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost 
    
    +0

    以前肯定不知道这个! – cheesemacfly 2013-02-13 01:16:27

    +0

    我在IIS 8.5的用户界面(服务器(或站点)>配置编辑器> system.webServer>代理中找到了这个。尽管如此,将以上内容复制到运行命令或命令行窗口中会更容易/更快速。 – ahwm 2017-05-25 22:25:22

    2

    我的猜测是您的服务器不允许您在重写URL时更改服务器变量HTTP_HOST

    在网站的水平,被应用的URL重写:

    inetmgr

    然后点击右边的选项卡上的Add...链接,并添加您的HTTP_HOST变量:

    add HTTP_POST

    +1

    不是一个糟糕的猜测但是那已经完成 - 如果它不适合告诉你,你会得到一个500.500的错误。 – Ryan 2013-02-12 22:11:22