Azure App Service applicationHost.xdt似乎无效

Joh*_*ohn 7 azure azure-web-sites

我试图通过使用Azure网站来建立反向代理,大致遵循本指南该指南解释了如何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>
Run Code Online (Sandbox Code Playgroud)

我将其放在site我的Web应用程序的目录中。

转换似乎已执行(从转换日志中执行):

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
Run Code Online (Sandbox Code Playgroud)

我确实有其中四个街区。

在重写设置标头时,我仍然得到500s。详细的错误消息包含以下内容:

<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>
Run Code Online (Sandbox Code Playgroud)

不知道此时该怎么办。有任何想法吗?

Rya*_*rks 6

我在TomSSL 文章中也遇到了同样的问题,@ David Ebbo的评论最终使我得到了答案,但是觉得有必要添加它来节省一些时间。这是因为缺少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>  
Run Code Online (Sandbox Code Playgroud)


Dav*_*bbo 2

调查这些问题的关键是确定问题是否在于转换未执行正确的操作,或者在于 applicationhost.config 未按您的预期工作。

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

有关此内容的更多详细信息,请参阅此页面。