【问题标题】:IIS 7.5 ARR/URL ReWrite2 ReversProxy to Apache on Virtual MachineIIS 7.5 ARR/URL ReWrite 2 反向代理到虚拟机上的 Apache
【发布时间】:2012-06-28 02:44:38
【问题描述】:

这是场景。

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

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

我已将 IIS 配置为反向代理,并设置了 URL 重写:

    <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 标头传递给我的 VM?

【问题讨论】:

    标签: asp.net iis url-rewriting iis-7 arr


    【解决方案1】:

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

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

    配置好了,现在可以使用了!

    【讨论】:

    • 谢谢。 Appcmd 位于“%windir%\system32\inetsrv\”
    猜你喜欢
    • 2015-09-04
    • 1970-01-01
    • 2021-08-16
    • 2018-04-13
    • 2016-10-28
    • 2013-01-28
    • 2021-08-30
    • 2021-11-08
    • 1970-01-01
    相关资源
    最近更新 更多