我有一个 GRPC 服务器在 ec2 实例上监听端口 8000。如果我在它前面放置一个网络负载均衡器,并在端口 80 上放置一个 TCP 侦听器,则 HTTP/2 连接前言PRI * HTTP/2.0
不会被转发到我的 GRPC 服务器(与 HTTP/2 请求相关的其他数据包似乎确实可以正常到达)。
如果我在 80 以外的任何端口上使用 TCP 侦听器,一切都会按预期工作 - 连接前言已正确发送并且我的请求成功。
我注意到,即使我删除端口 80 的 TCP 侦听器,负载均衡器仍然会接受端口 80 上的连接。
我的理解是,网络负载均衡器只会转发流量——端口 80 有什么特殊之处吗?
编辑:
我创建了一个没有侦听器的网络负载均衡器作为测试用例,只是为了显示端口 80 是开放的并且即使没有连接侦听器也能接受某种连接:
$ aws elbv2 create-load-balancer --name somename --type network --subnets subnet-a1b2c3d4
$ aws elbv2 describe-listeners --load-balancer-arn arn:aws:elasticloadbalancing:somearn
{
"Listeners": []
}
$ nmap somename-a1b2c3d4.elb.us-region-x.amazonaws.com
Starting Nmap 7.01 ( https://nmap.org ) at 2018-07-23 08:34 EDT
Nmap scan report for somename-a1b2c3d4.elb.us-region-x.amazonaws.com (123.255.255.255)
Host is up (0.019s latency).
rDNS record for 123.255.255.255: somename-a1b2c3d4.elb.us-region-x.amazonaws.com
Not shown: 986 filtered ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https
1720/tcp open h323q931
6000/tcp closed X11
6001/tcp closed X11:1
6002/tcp closed X11:2
6003/tcp closed X11:3
6004/tcp closed X11:4
6005/tcp closed X11:5
6006/tcp closed X11:6
6007/tcp closed X11:7
6009/tcp closed X11:9
6025/tcp closed x11
6059/tcp closed X11:59
Nmap done: 1 IP address (1 host up) scanned in 12.01 seconds