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哪些做反向代理到内部服务器。 有任何想法吗?

重写和ARR模块采取现有的请求,并将其重新路由到另一台服务器以完成该请求。

SSL应该始终在两个端点之间,在这种情况下,浏览器和最终的服务器,你试图在这个过程的中途引入SSL。 如果重写模块切换到SSL,浏览器如何知道这一点? (不)如果浏览器操作系统不信任最终服务器的证书会怎么样? 这不应该工作。

你应该做的是为所有的非ssl请求设置一个redirect规则,从http://到https://,然后浏览器将用SSL重复请求,它应该通过所有的方式。

你需要添加一个这样的条件:

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