Application Load Balancer指向默认Nginx页面而非我的网站求助
问题排查与解决步骤
核心问题根源
你的域名访问到Nginx默认页,本质是ALB把用户流量转发到了EC2的80端口,而这个端口被系统自带的Nginx占用,而非你运行在Docker里的网站(8080端口)。
具体解决步骤
检查ALB目标组的转发端口
- 进入AWS控制台的目标组配置页面,确认目标端口设置为
8080(而非默认的80)。健康检查正常说明目标组能连通EC2的8080,但转发规则大概率没对应上。
- 进入AWS控制台的目标组配置页面,确认目标端口设置为
验证EC2安全组的入站规则
- 确保EC2的安全组允许ALB的安全组访问
8080/TCP端口。如果之前只开放了80端口给ALB,ALB无法转发流量到8080,自然只能访问到EC2的80端口Nginx。
- 确保EC2的安全组允许ALB的安全组访问
确认ALB监听规则
- 检查ALB的监听配置(比如80端口监听),确认它关联的是你配置了8080目标端口的目标组,而非其他错误的目标组。
本地验证流量
- 登录EC2实例,执行
curl localhost:8080,确认你的网站能正常返回内容,排除Docker容器本身的问题。 - 如果EC2安全组允许你的本地IP访问8080,直接用
curl [EC2公网IP]:8080测试,确认网站可访问。
- 登录EC2实例,执行
可选优化方案(如果想使用80端口)
如果你希望把网站映射到EC2的80端口,可以先移除系统自带的Nginx:
sudo systemctl stop nginx sudo systemctl disable nginx sudo apt remove nginx -y # 用yum remove nginx(针对CentOS/RHEL系统)
然后修改docker-compose.yml的端口配置为:
ports: - 80:8080
重启容器后,再把ALB目标组的端口改回80即可。
内容的提问来源于stack exchange,提问作者taichi_tiger
相关产品推荐
相关产品推荐

