HTTP 错误 500.52 - Docker 上的 URL 重写模块错误

Posted

技术标签:

【中文标题】HTTP 错误 500.52 - Docker 上的 URL 重写模块错误【英文标题】:HTTP Error 500.52 - URL Rewrite Module Error on Docker 【发布时间】:2020-05-15 21:01:05 【问题描述】:

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

配置错误

此配置部分不能用于此路径。有时候是这样的 当该部分锁定在父级别时。锁定是通过 默认(overrideModeDefault="Deny"),或由位置显式设置 带有 overrideMode="Deny" 或旧的 allowOverride="false" 的标记。

web.config:

<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

【问题讨论】:

你可以试试这个规则:规则> 【参考方案1】:

首先构建一个普通的 IIS 10 机器进行测试,您应该注意到同样的错误,因为 allowedServerVariables 不能在 web.config 中。

Reference

【讨论】:

当然,看到同样的错误。知道如何将所有流量重写为 HTTPS 吗? HTTP to HTTPS rewrite 有很多方法,但我认为你上面使用的不是其中之一。 如果你能提出任何很棒的建议,我有点卡住了。【参考方案2】:

要启用 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>

【讨论】:

以上是关于HTTP 错误 500.52 - Docker 上的 URL 重写模块错误的主要内容,如果未能解决你的问题,请参考以下文章

HTTP错误500.52 - URL重写模块错误。

错误:无法在 http+docker://localhost 连接到 Docker 守护程序 - 它正在运行吗? [关闭]

在 nginx 代理后面使用 docker 私有注册表 (v2) 的 HTTP 响应格式错误

错误:无法解析CouchDB Docker容器中的http:// any:5984 / verifytestdb /

Docker - 来自守护程序的错误响应:收到意外的 HTTP 状态:503 服务不可用

Docker 存储库服务器向 HTTPS 客户端提供 HTTP 响应