AWS负载均衡器中“Protocol : Port”配置的含义及设置疑问
我太懂这种困惑了!当初第一次折腾AWS负载均衡器的目标组时,我也对着这个「Protocol : Port」选项犯嘀咕——试了两种端口设置居然都能正常跑,反而更搞不清它到底管啥了😂
先给你把这个配置的核心讲明白:这个选项设置的是负载均衡器把流量转发到后端目标(比如EC2实例)时,要使用的协议和端口,也就是你的后端服务在内部实际监听的那个端口和协议。
咱们结合官方文档的说明来拆解:
Choose a protocol for your target group that corresponds to the Load Balancer type that will route traffic to it. Some protocols now include anomaly detection for the targets and you can set mitigation options once your target group is created. This choice cannot be changed after creation
简单说就是:目标组的协议要和你用的负载均衡器类型匹配(比如应用负载均衡器ALB对应HTTP/HTTPS,网络负载均衡器NLB对应TCP/UDP),而且这个配置创建后不能改——因为它是LB和后端目标之间的通信规则,不是面向外部用户的。
你可能会问:那为啥我设成外部LB的端口也能工作?
这多半是巧合:比如你外部LB用的是443端口,刚好你的EC2实例上的服务也监听了443端口,那LB把流量转过去自然能通。但这不是规范的配置逻辑,正常的分工应该是:
- 外部用户访问的端口/协议:在负载均衡器的监听规则里设置(比如对外暴露HTTPS 443,用来接收用户请求)
- 目标组的「Protocol : Port」:对应后端服务的内部监听配置(比如EC2上的Nginx监听HTTP 80,这里就设HTTP : 80)
给你个明确的设置建议:就填你的后端目标服务实际在内部监听的协议和端口就行。比如你的EC2上跑的是HTTP服务在80端口,就选HTTP : 80;如果后端服务本身配置了HTTPS证书,也可以选HTTPS : 443,这样LB和后端之间的通信也是加密的。
备注:内容来源于stack exchange,提问作者Rb C




