技術信息哪裏應該<Azure網站applicationHost.config中存在<allowedServerVariables>標籤?
Azure Website
- 安裝
IIS Manager Site Extension by shibayan
方案
我已經實現了我的0反向代理,但是接收服務器沒有得到任何關於初始請求是否超過HTTPS
的指示。
我想要做的是通過自定義HTTP Header
將HTTPS
標誌ON/OFF
從初始請求發送到代理服務器。
理論上
- 使用
shibayan
的IIS Manager Site Extension
,我可以編輯applicationHost.xdt
文件,給轉換插入一個<allowedServerVariables>
標籤,並應該讓我來設置自定義HTTP Header
。
在實踐
我已經配置了我重寫規則這樣:
<rule name="Proxy" stopProcessing="true" xdt:Transform="Replace" xdt:Locator="Match(name)">
...
<serverVariables>
<set name="HTTP_X_USE_HTTPS" value="{HTTPS}" />
</serverVariables>
...
</rule>
,並試圖在哪裏把<serverVariables>
標籤的幾個組合...
嘗試一:
如this answer中所述。
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.webServer>
<proxy enabled="true" preserveHostHeader="false" reverseRewriteHostInResponseHeaders="false" xdt:Transform="Insert" />
<rewrite>
<allowedServerVariables>
<add name="HTTP_X_USE_HTTPS" xdt:Transform="Insert" />
</allowedServerVariables>
</rewrite>
</system.webServer>
</configuration>
結果:
HTTP錯誤500.50 - URL重寫模塊錯誤。
服務器變量「HTTP_X_USE_HTTPS」不允許設置。將 服務器變量名稱添加到允許的服務器變量列表中。
嘗試二:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<location path="~1[app service name]" overrideMode="Allow">
<system.webServer>
<proxy enabled="true" preserveHostHeader="false" reverseRewriteHostInResponseHeaders="false" xdt:Transform="Insert" />
<rewrite>
<allowedServerVariables>
<add name="HTTP_X_USE_HTTPS" xdt:Transform="Insert" />
</allowedServerVariables>
</rewrite>
</system.webServer>
</location>
</configuration>
結果:HTTP 500。50
嘗試三:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<location path="" overrideMode="Allow">
<system.webServer>
<proxy enabled="true" preserveHostHeader="false" reverseRewriteHostInResponseHeaders="false" xdt:Transform="Insert" />
<rewrite>
<allowedServerVariables>
<add name="HTTP_X_USE_HTTPS" xdt:Transform="Insert" />
</allowedServerVariables>
</rewrite>
</system.webServer>
</location>
</configuration>
結果:HTTP 503
嘗試四:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<location path="[app service name]" overrideMode="Allow">
<system.webServer>
<proxy enabled="true" preserveHostHeader="false" reverseRewriteHostInResponseHeaders="false" xdt:Transform="Insert" />
<rewrite>
<allowedServerVariables>
<add name="HTTP_X_USE_HTTPS" xdt:Transform="Insert" />
</allowedServerVariables>
</rewrite>
</system.webServer>
</location>
</configuration>
結果:HTTP 503
我知道, Ť他applicationHost.config
文件的Azure Website
有一些<system.webServer>
可以定義幾個地方,如在以下元素:
<configuration>
<configuration><location>
...不過我已經試過這些組合無濟於事。
問題
- 有另一種可能的位置?
- 我以任何方式錯誤地配置了我的
.xdt
文件嗎? - 我是否缺少我的
applicationHost.config
?