X-Forwarded-For导致部署在IIS上的asp.net core 1.1出现502错误

X-Forwarded-For导致部署在IIS上的asp.net core 1.1出现502错误,iis,proxy,asp.net-core,asp.net-core-mvc,Iis,Proxy,Asp.net Core,Asp.net Core Mvc,我们正在使用IIS7.5在Windows 2008 R2服务器上托管一个ASP.NET Core 1.1网站。我们收到了一些错误报告,说使用web代理的网站用户得到了502。因此,通过设置Squid代理的开箱即用安装,我可以成功地重现他们遇到的问题 这一功能每天都可以正常工作: 客户端->网络代理->IIS->红隼 每次“502-web服务器在充当网关或代理服务器时收到无效响应”时,此操作都会失败: 客户端->网络代理->负载均衡器IIS->Kestrel 使用Microsoft的消息分析

我们正在使用IIS7.5在Windows 2008 R2服务器上托管一个ASP.NET Core 1.1网站。我们收到了一些错误报告,说使用web代理的网站用户得到了502。因此,通过设置Squid代理的开箱即用安装,我可以成功地重现他们遇到的问题


这一功能每天都可以正常工作:

客户端->网络代理->IIS->红隼


每次“502-web服务器在充当网关或代理服务器时收到无效响应”时,此操作都会失败:

客户端->网络代理->负载均衡器IIS->Kestrel


使用Microsoft的消息分析器,我从负载平衡器和web代理中获得了发送的请求头。 有效的一个在X-Forwarded-For-Request报头中只有一个IP号码,而失败的一个有两个

X-Forwarded-For:
vs.
X-Forwarded-For:,

有什么我不明白的吗?我应该对IIS进行一些神奇的配置,还是这是IIS集成中的一个bug?如果我有相同的设置,并且运行一个普通的旧ASP.NET网站,这就可以了

我找到了使用URL重写模块的解决方法,但感觉不太对劲:

<rule name="Clear">
     <match url="(.*)" ignoreCase="true" />
     <serverVariables>
         <set name="HTTP_X_FORWARDED_FOR" value="0.0.0.0" replace="true"/>
     </serverVariables>
     <action type="Rewrite" url="{R:0}" appendQueryString="true" />
</rule>


听起来像是应用程序中的一个异常。您是否已打开日志记录以查看发生了什么情况?是的,当客户端点击502时,stdout不会注册任何内容。因此,关键是:DotNetCore.1.1.0-WindowsHosting、Microsoft IIS/7.5和a,在X-Forwarded-Forwarded-For标头中。这是API Web.config的规则吗?我托管了一个API,有一个客户端使用Squid,他们也看到了502。规则对你有用吗?@franzke-yes。对我来说很好。听起来像是应用程序中的一个例外。您是否已打开日志记录以查看发生了什么情况?是的,当客户端点击502时,stdout不会注册任何内容。因此,关键是:DotNetCore.1.1.0-WindowsHosting、Microsoft IIS/7.5和a,在X-Forwarded-Forwarded-For标头中。这是API Web.config的规则吗?我托管了一个API,有一个客户端使用Squid,他们也看到了502。规则对你有用吗?@franzke-yes。对我来说很好。