Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net IIS AAR-反向代理的URL重写-如何发送HTTP\U主机_Asp.net_Iis_Url Rewriting_Iis 7.5_Arr - Fatal编程技术网

Asp.net IIS AAR-反向代理的URL重写-如何发送HTTP\U主机

Asp.net IIS AAR-反向代理的URL重写-如何发送HTTP\U主机,asp.net,iis,url-rewriting,iis-7.5,arr,Asp.net,Iis,Url Rewriting,Iis 7.5,Arr,尝试在几个后端IIS服务器前面使用AAR作为反向代理 分配给运行IIS/AAR的服务器的一个公共ip地址 然后设置出站URL重写规则以重定向到 多个后端服务器取决于主机名 在某种程度上可以工作,但总是返回后端服务器默认站点(不是映射到主机名的站点),因此看起来主机名(HTTP_主机)没有从代理服务器传递到后端服务器 (我已经验证了通过编辑主机绕过反向代理,后端服务器返回绑定到主机头的正确站点) 这是一个规则示例(192.168.0.99是内部服务器,site.myco.com是主机名)

尝试在几个后端IIS服务器前面使用AAR作为反向代理

  • 分配给运行IIS/AAR的服务器的一个公共ip地址

  • 然后设置出站URL重写规则以重定向到 多个后端服务器取决于主机名

在某种程度上可以工作,但总是返回后端服务器默认站点(不是映射到主机名的站点),因此看起来主机名(HTTP_主机)没有从代理服务器传递到后端服务器

(我已经验证了通过编辑主机绕过反向代理,后端服务器返回绑定到主机头的正确站点)

这是一个规则示例(192.168.0.99是内部服务器,site.myco.com是主机名)


你试过把几个变量放在这里吗

    <!-- 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>


但是,alas总是返回默认绑定-有什么想法吗?

我猜您的服务器不允许您在重写URL时更改服务器变量
HTTP\u HOST

在应用URL重写的网站级别:

然后单击右侧选项卡上的
Add…
链接,添加您的
HTTP\u主机
变量:


这篇文章的答案是-

需要启用preserveHostHeader-看不到您在UI中是如何做到这一点的,但这是可行的

从命令行运行此命令以更新Machine/webroot/apphost配置

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

您可以使用GUI来实现这一点。在根服务器上单击配置编辑器,转到System.webServer->proxy并将preserveProxyHeader设置为true


猜得不错,但已经猜到了-如果没有告诉你,你会得到一个500.500的错误。以前肯定不知道这个错误!我在IIS8.5的UI中发现了这一点:服务器(或站点)>Configuration Editor>system.webServer>Proxy。不过,将上述内容复制到运行命令或命令行窗口更容易/更快。如果它们在同一台服务器上创建重写循环,则这不起作用。
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost