IIS 服务器场 - URL 重写

问题描述 投票:0回答:2

我正在尝试创建 IIS 服务器场,但 URL 重写无法正常工作时遇到问题。

Windows 10 企业版 IIS 10

以下是相关配置。

<applicationPools>
    <add name="always-blue" autoStart="true">
        <processModel pingingEnabled="true" pingResponseTime="00:01:30" />
    </add>
    <add name="always-green" autoStart="true">
        <processModel pingingEnabled="true" pingResponseTime="00:01:30" />
    </add>
</applicationPools>
<sites>
    <site name="always-blue" id="2" serverAutoStart="true">
        <application path="/" applicationPool="always-blue">
            <virtualDirectory path="/" physicalPath="C:\xxx\always-up-blue" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:80:alwaysup-blue" />
        </bindings>
    </site>
    <site name="always-green" id="3" serverAutoStart="true">
        <application path="/" applicationPool="always-green">
            <virtualDirectory path="/" physicalPath="C:\xxx\always-up-green" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:80:alwaysup-green" />
        </bindings>
    </site>
</sites>

<rewrite>
    <globalRules>
        <rule name="alwaysup rewrite" stopProcessing="false">
            <match url=".*" />
            <conditions>
                <add input="{HTTP_HOST}" pattern="^alwaysup$" />
                <add input="{SERVER_PORT}" pattern="^80$" />
            </conditions>
            <action type="Rewrite" url="http://alwaysup/{R:0}" />
        </rule>
    </globalRules>
</rewrite>

http://alwaysup-blue 和 http://always-green 网站均已启动且工作正常。但是服务器场不起作用。 http://alwaysup -> 返回 502。我用 FailTracedURLs 检查了日志,但无法理解这一点。这是日志..

url-rewriting iis-10 url-rewrite-module server-farm
2个回答
0
投票

跟踪警告:REWRITE_DISABLED_KERNEL_CACHE

此警告表示:如果重写规则集使用列表中未提及的任何服务器变量,则该规则集被认为对于输出缓存不安全。这意味着 URL 重写模块将禁用所有请求的内核模式缓存,无论请求 URL 是否被重写。请参阅:与 IIS 输出缓存交互

但我不认为这个警告是502错误的根本原因,问题应该出在你的部署过程中。我按照教程在IIS中使用蓝绿部署,没有出现错误。您可以按照此链接中的步骤尝试重新部署:如何在 IIS 中使用蓝绿部署


0
投票
    <webFarms>
        <webFarm name="alwaysup" enabled="true">
            <server address="alwaysup-blue" enabled="true">
                <applicationRequestRouting hostName="alwaysup-blue" httpPort="8081" />
            </server>
            <server address="alwaysup-green" enabled="true">
                <applicationRequestRouting hostName="alwaysup-green" httpPort="8082" />
            </server>
            <applicationRequestRouting>
                <healthCheck url="http://alwaysup/up.html" responseMatch="up" />
                <loadBalancing />
                <protocol preserveHostHeader="false">
                    <cache enabled="true" validationInterval="00:01:00" />
                </protocol>
            </applicationRequestRouting>
        </webFarm>

必须将preserveHostHeader添加到配置的webfarm部分。

© www.soinside.com 2019 - 2024. All rights reserved.