IIS URL 重写和反向代理

IIS URL 重写和反向代理

我有一个反向代理规则,它将所有对特定子域的请求转发到内部服务器,并且一切正常。

 <rule name="cloud.domain.com" enabled="true" stopProcessing="true">
     <match url="(.*)" />
     <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
         <add input="{HTTP_HOST}" pattern="^(cloud.)domain.com$" />
     </conditions>
     <action type="Rewrite" url="http://127.0.0.1:8000/{R:0}" appendQueryString="true" />
 </rule>

这对 cloud.domain.com 的 http 和 https 请求都有效。但是我希望所有请求都http://cloud.domain.com转发至https://cloud.domain.com它对内部服务器进行反向代理。有什么想法吗?

答案1

Rewrite 和 ARR 模块接受现有请求并将其重新路由到另一台服务器以满足该请求。

SSL 应始终位于两个端点之间,在本例中为浏览器和最终服务器,您尝试在流程中途引入 SSL。如果重写模块切换到 SSL,浏览器如何知道这一点?(它不知道)如果浏览器操作系统不信任最终服务器的证书怎么办?这应该行不通。

您应该为所有非 SSL 请求设置重定向规则,从 http:// 到 https://,然后浏览器将使用 SSL 重复请求,并且它应该全程通过。

您需要添加如下条件:

<conditions>
  <add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />

相关内容