Azure App Service applicationHost.xdt似乎无效

时间:2017-09-06 12:19:23

标签: azure azure-web-sites

我尝试使用Azure网站设置反向代理,大致遵循this guide解释如何修改此类网站上的ApplicationHost.config - 但它并没有为我工作。

我有这个applicationHost.xdt:

<?xml version="1.0"?>  
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">  
    <system.webServer>
        <proxy xdt:Transform="InsertIfMissing" enabled="true" preserveHostHeader="false" reverseRewriteHostInResponseHeaders="false" />
        <rewrite>
            <allowedServerVariables>
                <add name="HTTP_X_ORIGINAL_HOST" xdt:Transform="InsertIfMissing" />
                <add name="HTTP_X_UNPROXIED_URL" xdt:Transform="InsertIfMissing" />
                <add name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" xdt:Transform="InsertIfMissing" />
                <add name="HTTP_ACCEPT_ENCODING" xdt:Transform="InsertIfMissing" />
            </allowedServerVariables>
        </rewrite>
    </system.webServer>
</configuration>

我把它放在我的网络应用的site目录中。

变换似乎被执行(来自变换日志):

2017-09-06T12:12:20 StartSection Executing InsertIfMissing (transform line 8, 50)
2017-09-06T12:12:20 on /configuration/system.webServer/rewrite/allowedServerVariables/add
2017-09-06T12:12:20 Applying to 'allowedServerVariables' element (no source line info)
2017-09-06T12:12:20 EndSection Done executing InsertIfMissing

我确实有四个街区。

我仍然可以通过重写来设置标题500。详细的错误消息包含:

<h3>HTTP Error 500.50 - URL Rewrite Module Error.</h3> 
<h4>The server variable &quot;HTTP_X_UNPROXIED_URL&quot; is not allowed to be set. Add the server variable name to the allowed server variable list.</h4>

目前还不确定要做什么。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

调查这些问题的关键是确定问题是转换不正确,还是applicationhost.config无法正常工作。

您可以从Kudu控制台查看D:\local\Config中生成的applicationhost.config。

有关详细信息,请参阅this page

答案 1 :(得分:2)

我在TomSSL article上遇到了同样的问题,@ David Ebbo的comment最终使我得到了答案,但为节省人们一些时间,值得添加此答案。这是因为applicationHost.config缺少xdt:Locator="Match(name)"

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <system.webServer>
        <proxy xdt:Transform="InsertIfMissing" enabled="true" preserveHostHeader="false" reverseRewriteHostInResponseHeaders="false"/>
        <rewrite xdt:Transform="InsertIfMissing">
            <allowedServerVariables xdt:Transform="InsertIfMissing">
                <add name="HTTP_X_ORIGINAL_HOST" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)"/>
                <add name="HTTP_X_UNPROXIED_URL" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)"/>
                <add name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)"/>
                <add name="HTTP_ACCEPT_ENCODING" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)"/>
            </allowedServerVariables>
        </rewrite>
    </system.webServer>
</configuration>