AWS Fargate部署中NLB端口转发异常问题求助
问题根源与修正方案
核心错误原因
你把两个不同端口的服务(React:80、API:8000)放到了同一个目标组里,而NLB的TCP监听器转发请求时,目标组的端口配置逻辑会导致路由混乱:
- 当NLB的8000端口监听器转发请求到目标组时,目标组会把请求发送到组内所有注册目标的指定端口——如果目标组配置的是固定端口(比如80),就会把8000的请求发到React的80端口;如果配置的是8000,就会发到API的8000,但组里两个目标端口不一致,必然出现随机路由错误。
- NLB的TCP监听器不具备基于端口匹配目标的能力,同一个目标组里的所有目标都会被视为可转发对象,导致请求偶尔被分配到错误的服务。
正确配置步骤
- 拆分目标组:创建两个独立的目标组
- 目标组A:仅注册React容器,目标端口设置为80,健康检查路径可使用
/(React首页) - 目标组B:仅注册API容器,目标端口设置为8000,健康检查路径用API的健康端点(比如
/health)
- 目标组A:仅注册React容器,目标端口设置为80,健康检查路径可使用
- 调整NLB监听器转发规则:
- 80端口监听器:转发到目标组A
- 8000端口监听器:转发到目标组B
- Elastic IP绑定:保持Elastic IP绑定到NLB的公网IP即可,无需额外调整(NLB本身是固定公网入口,绑定后就能维持固定访问IP)
额外注意事项
- 确保每个目标组的健康检查配置正确,只有健康状态的容器才会被纳入转发范围
- Fargate服务的安全组要允许NLB所在安全组访问80和8000端口
内容的提问来源于stack exchange,提问作者anjuna47
相关产品推荐
相关产品推荐

