Azure应用网关前置Web App端到端SSL出现404问题求助
解决Azure应用网关WAF部署后Web App访问404的问题
我之前部署端到端SSL的应用网关+Web App时也碰到过一模一样的情况——健康检查全绿但访问就跳404,核心原因大多和请求的Host头传递不正确有关,毕竟Azure Web App是依赖Host头来识别具体站点的。下面给你一步步排查和解决的方法:
1. 检查应用网关的HTTP/HTTPS设置
这是最常见的问题点:
- 打开应用网关的HTTPS设置(因为你用了端到端SSL),找到「自定义设置」里的「主机名」选项。
- 你需要手动填入你的Web App域名
myapp.azurewebsites.net,或者勾选「从后端地址提取主机名」(不过手动指定更稳妥,避免后续后端池变更出问题)。 - 同时确认「后端协议」选的是
HTTPS,和Web App的HTTPS配置匹配。
2. 验证后端池的目标配置
虽然健康检查正常,但还是快速确认下:
- 后端池的目标类型必须选FQDN,然后填入
myapp.azurewebsites.net,绝对不要用IP地址——Web App的IP是动态的,而且用IP访问会导致Host头不匹配,直接触发404。
3. 核对健康检查的Host头设置
健康检查正常说明后端能通,但也要确保健康检查的Host头是正确的:
- 打开应用网关的健康检查规则,查看「主机名」字段,应该设置为
myapp.azurewebsites.net,而不是默认的应用网关自身域名或空值。 - 另外确认健康检查的路径和Web App的实际健康端点匹配,比如如果你的Web App根路径
/能正常返回200就没问题;如果根路径有重定向,可能要调整到具体的健康接口(比如/health)。
4. 快速排查Web App侧的配置
- 登录Web App门户,查看「网络」→「访问限制」,确认是否允许应用网关的公网IP(或应用网关的出站IP范围)访问。不过健康检查正常的话,这个大概率没问题,但可以快速排除。
- 检查Web App的「配置」→「常规设置」里的「HTTP版本」,确保和应用网关的HTTP设置匹配(比如都是HTTP/1.1或HTTP/2)。
5. 用curl测试Host头是否生效
可以用命令行验证请求的Host头是否正确传递:
curl -v -H "Host: myapp.azurewebsites.net" https://<应用网关公网IP>
如果返回正常,说明Host头设置正确;如果还是404,那可能要检查Web App自身的路由规则(不过你用的是.azurewebsites.net官方域名,这部分问题概率很低)。
我当时就是在HTTPS设置里漏了指定Host头,改完之后立刻就正常了,按照上面的步骤排查应该能解决你的问题。
内容的提问来源于stack exchange,提问作者Moim




