Iis

IIS URL 重寫和反向代理

  • February 8, 2014

我有一個反向代理規則,它將對特定子域的所有請求轉發到內部伺服器,並且一切正常。

<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,後者對內部伺服器進行反向代理。有任何想法嗎?

Rewrite 和 ARR 模組接受現有請求並將其重新路由到另一台伺服器以完成該請求。

SSL 應始終位於兩個端點之間,在本例中為瀏覽器和最終伺服器,您正試圖在過程中途引入 SSL。如果重寫模組切換到 SSL,瀏覽器是怎麼知道的呢?(它不)如果瀏覽器作業系統不信任最終伺服器的證書怎麼辦?這不應該工作。

你應該做什麼它為所有非ssl請求設置一個重定向規則,從http://到https://,然後瀏覽器將使用SSL重複請求,它應該一直通過。

您需要添加這樣的條件:

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

引用自:https://serverfault.com/questions/574050