0

这是场景。

服务器是 Win2k8,运行 IIS 7.5。我安装了 ARR 和 URL Rewrite2。

我有一个运行最新 Ubuntu Server 的虚拟机。Apache、mySQL、PHP 都安装好了。

我已将 IIS 配置为反向代理,并设置了 URL ReWrite,如下所示:

    <rewrite>
        <rules>
            <rule name="ReverseProxyInboundRule1" stopProcessing="false">
                <match url="(.*)" />
                <action type="Rewrite" url="http://192.168.1.17/{R:1}" />
            </rule>
        </rules>
    </rewrite>

我已经验证http://dev.o7t.in正确地被路由到虚拟机上 apache 中的配置站点,但是,http: //wp.o7t.in 被定向到同一个确切的位置。这是apache中两个站点的配置:

开发:

# NameVirtualHost *:80

<VirtualHost *>
    ServerName devo7tin
    ServerAlias dev.o7t.in
    ServerAdmin support@o7t.in
    DocumentRoot /var/www/dev/
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/dev/>
            Options -Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

</VirtualHost>

wp:

# NameVirtualHost *:80

<VirtualHost *>
    ServerName wpo7tin
    ServerAlias wp.o7t.in
    ServerAdmin support@o7t.in
    DocumentRoot /var/www/wordpress/
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/wordpress/>
            Options -Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

</VirtualHost>

并且 NameVirtualHost 已在 ports.conf 中配置

我注意到的是主机标头,总是恢复为虚拟机的 IP 地址(在本例中为 192.168.1.17),并完全忽略了请求的主机。

所以....我怎样才能解决这个问题,并将正确的 HTTP_HOST 标头传递给我的虚拟机?

4

1 回答 1

3

我是对的。这是一个 IIS 不发送 HTTP_HOST 标头的事情。当然,他们为什么要在任何地方发布它,但显然 ARR 默认禁用,但是,它可以通过以下方式启用:

appcmd.exe set config -section:system.webServer/proxy /preserveHostHeader:"True" /commit:apphost

配置了这个,它现在可以工作了!

于 2012-06-26T21:49:55.903 回答