首页 > 解决方案 > HTTP 错误 500.52 - Docker 上的 URL 重写模块错误

问题描述

我正在尝试将我所有的 URL 重写为 HTTPS,但收到此错误,不确定我做错了什么:

配置错误

此配置部分不能在此路径中使用。当该部分锁定在父级别时会发生这种情况。锁定是默认情况下 (overrideModeDefault="Deny") 或由具有 overrideMode="Deny" 或旧 allowOverride="false" 的位置标记显式设置的。

网络配置:

<rewrite>
      <allowedServerVariables>
        <add name="HTTPS" />
        <add name="X-FORWARDED-PROTO" />
      </allowedServerVariables>
      <rules>
        <rule name="HTTPS_AlwaysOn" patternSyntax="Wildcard">
          <match url="*" />
          <serverVariables>
            <set name="HTTPS" value="on" />
          </serverVariables>
          <action type="None" />
          <conditions>
            <add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" />
          </conditions>
        </rule>
      </rules>
    </rewrite>

我还在 Docker 容器上安装了 Rewrite 模块和 ARR

# Install Url Rewrite
ADD https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_en-US.msi /install/rewrite_amd64_en-US.msi
RUN msiexec.exe /i c:\install\rewrite_amd64_en-US.msi /passive

ADD  https://download.microsoft.com/download/A/D/C/ADC4BAF8-A094-47B5-A6F6-CE4C5ED18BF8/ARRv3_setup_amd64_en-us.EXE /install/ARRv3_setup_amd64_en-us.exe
RUN c:\install\ARRv3_setup_amd64_en-us.exe /Q

标签: dockeriisdockerfileiis-10

解决方案


要启用 SSL 重写,只需在里面添加:

<rules>
  <rule name="SSL Redirect" enabled="true" stopProcessing="true">
    <match url="(.*)"/>
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTPS}" pattern="off"/>
        <add input="{HTTP_HOST}" pattern="localhost" negate="true"/>
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/>
  </rule>
</rules>

推荐阅读