AWS EC2网络负载均衡器启用HTTP2后无法正常运行问题咨询
问题排查与解决方案
首先明确你的疑问:和ACM证书无关
只要你原有HTTP1.1模式下,负载均衡器绑定ACM证书后可以正常提供HTTPS服务,就说明证书调用完全正常,该问题和ACM证书没有任何关系。
核心问题定位
首先先确认你使用的AWS负载均衡类型,不同类型的负载均衡对HTTP2的支持逻辑完全不同:
- 如果你使用的是网络负载均衡器(NLB):NLB工作在OSI四层(传输层),即使开启了TLS终止,也仅做TLS握手和流量转发,不会解析HTTP协议,本身不支持HTTP2的协商和处理,你在NLB监听器上配置HTTP2本身不会生效。
- 如果你使用的是应用负载均衡器(ALB):ALB工作在OSI七层(应用层),支持HTTPS终止和HTTP2协商,配置后不生效可按以下步骤排查:
- 确认域名解析指向ALB的公网地址,而非直接指向后端EC2实例
- 确认ALB到后端的转发规则:如果用HTTP/HTTP1.1协议转发到后端Nginx,ALB会自动完成HTTP2到HTTP1.1的协议转换,不需要后端额外适配;如果用HTTPS协议转发到后端,才需要后端Nginx同时开启HTTP2支持
- 用curl命令直接验证协议支持:
curl -I --http2 https://你的域名,正常开启HTTP2的返回会包含HTTP/2 200的状态行
NLB场景下开启HTTP2的正确方案
如果你确定要使用NLB,不需要在NLB侧做任何HTTP2相关配置,直接调整后端Nginx的配置即可:
- 把SSL证书部署到后端两台EC2的Nginx服务上(不能仅把ACM证书绑定到NLB)
- 修改Nginx的server配置块,开启http2支持:
server { listen 443 ssl http2; server_name 你的业务域名; ssl_certificate /path/to/你的证书.pem; ssl_certificate_key /path/to/你的证书私钥.key; # 其余原有配置保持不变 }
- 重载Nginx配置:
nginx -s reload
内容的提问来源于stack exchange,提问作者davidwebca
相关产品推荐
相关产品推荐

