无法通过应用程序网关公网IP访问Azure App Service
问题描述
- 环境配置:
- 基于PHP 8的基础Azure App Service(名称
myapp),使用B2规格App Service计划 - WAF_v2层应用程序网关,监听器端口设为80,后端HTTP协议为HTTP,后端池仅包含
myapp
- 基于PHP 8的基础Azure App Service(名称
- 异常现象:
- 直接访问
myapp.azurewebsites.net的HTTPS链接可正常打开 - 通过应用网关公网IP(HTTP 80端口)访问时出现错误:

- 应用网关后端健康状态显示为健康
- 已关闭App Service的HTTPS Only选项,问题仍未解决:

- 直接访问
- 后端HTTP设置现状:

排查与解决步骤
修正后端HTTP设置的主机头
Azure App Service依赖正确的主机头路由请求,从后端HTTP设置截图来看,需确认后端主机名配置:- 进入应用网关的后端HTTP设置页面,将后端主机名设置为
myapp.azurewebsites.net,或选择「从后端目标获取」选项,确保请求携带正确的主机头到达App Service。
- 进入应用网关的后端HTTP设置页面,将后端主机名设置为
验证请求路由规则关联关系
检查应用网关的请求路由规则,确认其已正确关联80端口的监听器、目标后端HTTP设置和后端池,避免因规则配置错误导致请求无法转发。检查App Service访问限制
进入App Service的「网络」->「访问限制」页面,确认是否存在阻止应用网关IP的规则。若有,需将应用网关的公网IP或其所属虚拟网络的IP段添加至允许列表。查看日志定位请求异常
- 应用网关:启用并查看
ApplicationGatewayAccessLog诊断日志,检查请求是否成功转发至后端,以及返回的状态码和错误信息。 - App Service:通过「日志流」或「诊断日志」查看是否接收到来自应用网关的请求,确认请求的主机头、协议等参数是否符合预期。
- 应用网关:启用并查看
测试App Service的HTTP访问能力
关闭HTTPS Only后,直接访问http://myapp.azurewebsites.net,若此访问也失败,说明App Service自身存在HTTP配置问题:- 检查PHP应用的
.htaccess文件或框架配置,确认是否存在强制HTTPS重定向的规则,需临时禁用此类规则测试。
- 检查PHP应用的
尝试切换后端协议为HTTPS
若上述步骤无效,可将应用网关后端HTTP设置的协议改为HTTPS、端口设为443,Azure应用网关默认信任App Service的托管SSL证书,此配置可规避隐性的HTTPS重定向冲突。
内容的提问来源于stack exchange,提问作者Saurav Likhar
相关产品推荐
相关产品推荐

