Azure应用网关配置App Service时重定向至带80端口地址异常排查
问题原因解析
你遇到的https://myappname.azurewebsites.net:80异常重定向,核心是App Service或应用的重定向逻辑错误复用了前端请求端口,具体细节如下:
头信息传递导致的端口误读
应用网关默认会向后端App Service传递X-Forwarded-Port头,值为前端接收请求的80端口。同时你的配置中启用了PickHostNameFromBackendAddress,使Host头被设置为App Service的FQDN。当App Service或应用内部存在HTTP转HTTPS的重定向逻辑时,若该逻辑未正确区分前端端口与HTTPS协议的默认端口(443),就会错误地将80端口拼接到HTTPS URL中,生成不符合规范的https://myappname.azurewebsites.net:80。配置缺失的影响
你的PowerShell脚本未针对后端HTTP请求添加自定义头修正逻辑。虽然应用网关会自动转发X-Forwarded-*系列头,但App Service的重定向逻辑未正确处理这些头信息,最终导致端口拼接错误。
根源性解决思路
你通过重写规则修复问题的方式是可行的,此外还可以从配置层面避免:
- 在应用网关的后端HTTP设置中添加自定义头
X-Forwarded-Proto: HTTPS,让App Service明确识别请求的最终协议,避免重定向时混淆端口; - 调整App Service或应用内部的重定向逻辑,忽略
X-Forwarded-Port,直接使用HTTPS默认的443端口生成重定向URL。
脚本优化示例
修改后端HTTP设置的代码,补充自定义头配置:
Add-AzApplicationGatewayBackendHttpSettings -Name $httpSettingsName -ApplicationGateway $gw -Protocol Https -Port 443 -PickHostNameFromBackendAddress -CookieBasedAffinity Disabled -RequestTimeout 30 -CustomHeaders @{"X-Forwarded-Proto"="HTTPS"}
内容的提问来源于stack exchange,提问作者prakashrajansakthivel
相关产品推荐
相关产品推荐

