AWS应用负载均衡器(ALB)随机返回404错误的原因排查
问题排查与解决方案
根据你的描述,直接访问EC2公网IP无异常,但通过ALB访问时随机出现404,核心排查方向集中在ALB与目标组的配置匹配、健康检查逻辑,以及IIS的请求处理细节上,具体如下:
1. 目标组健康检查配置异常
虽然仅使用一台EC2,但如果ALB目标组的健康检查规则配置不当,会导致EC2被临时标记为"不健康",ALB停止向其转发请求,恢复后又重新转发,从而出现随机404:
- 检查健康检查的路径:确保健康检查使用的路径(如
/)在IIS上能稳定返回200状态码,避免使用依赖动态内容的路径(如需要登录的页面)。 - 检查健康检查的端口:确认目标组健康检查使用的端口与IIS实际监听的端口一致(比如你访问的是8080,需确认健康检查端口是否为8080)。
- 检查健康检查的超时与重试阈值:如果健康检查超时时间过短,或者失败阈值设置过低,可能会误判EC2健康状态。
2. ALB监听器与目标组的端口映射不匹配
结合你提供的监听器配置截图,重点确认:
- ALB的8080监听器是否正确转发到目标组的对应端口:如果IIS监听的是8080,目标组必须配置为转发到8080端口;如果IIS监听的是80,那ALB的8080监听器需转发到目标组的80端口。端口不匹配会导致请求无法到达IIS对应的站点,触发404。
3. IIS站点的主机头绑定问题
直接访问EC2 IP时,请求的Host头是IP地址;通过ALB访问时,Host头是labcac.netcontent.com.ar:8080。如果IIS站点仅绑定了EC2的公网IP,未绑定该域名,可能出现站点匹配异常:
- 打开IIS管理器,找到对应站点的绑定设置,添加
labcac.netcontent.com.ar的主机头绑定(端口保持与IIS监听一致)。
4. 查看IIS访问日志定位具体请求异常
启用并查看IIS的访问日志,重点关注出现404时的请求记录:
- 检查请求的
Host头、请求路径是否正确,确认是否是ALB转发时意外修改了请求路径。 - 对比正常请求与404请求的差异(如请求方法、协议版本),排查ALB请求转发逻辑的问题。
5. ALB节点的临时转发异常
Route53指向ALB域名后,请求会被解析到多个可用区的ALB节点,个别节点可能存在临时转发故障:
- 使用
nslookup labcac.netcontent.com.ar查看ALB的解析IP,尝试直接访问每个IP的8080端口,确认是否是某个节点导致的随机异常。
内容的提问来源于stack exchange,提问作者user3770963
相关产品推荐
相关产品推荐

