docker - 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
解决方案
要启用 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>
推荐阅读
- haskell - 如何在Haskell中转置由三元组组成的三元组
- java - 当我尝试使用图像按钮进入第二个活动时应用程序崩溃
- javascript - 如果我将输入值存储在变量中,为什么我的输入值总是空的?
- swift - 我的 UIViewcontroller 没有填满整个屏幕?
- javascript - v6: React-table 多选问题
- github - Github - 如何下载 hdf5 文件?
- python - ImportError:无法导入名称“Bar”
- c# - 在一行中投射和添加列表
- javascript - 制作响应式组件 DRYer
- javascript - 将来自一个时区的日期字符串与另一个时区的 Date 对象进行比较