如何在EKS环境下的nginx-ingress中开启HTTP/2支持?
EKS Nginx Ingress + ELB 栈启用HTTP/2操作步骤
前提说明
- AWS经典负载均衡器(CLB/传统ELB)原生不支持HTTP/2,如果你当前使用的是CLB,需要先切换为应用负载均衡器(ALB)或网络负载均衡器(NLB),只需为nginx-ingress controller的Service添加对应annotation即可:
annotations: service.beta.kubernetes.io/aws-load-balancer-type: alb # 可根据需求替换为nlb - 以下操作默认你已经使用ALB/NLB作为nginx-ingress的前端负载均衡
步骤1:配置Nginx Ingress开启HTTP/2
大部分场景下nginx-ingress都是通过Helm部署,可任选以下一种方式配置:
- 方式1:执行Helm升级命令直接注入配置
替换命令中的release名称和命名空间后执行:helm upgrade <你的nginx-ingress release名> ingress-nginx/ingress-nginx -n <ingress所在命名空间> --set controller.config.use-http2=true - 方式2:手动修改ConfigMap配置
找到对应命名空间下名为ingress-nginx-controller的ConfigMap,在data字段下添加配置:
保存后配置会自动重载,约1分钟即可生效。data: use-http2: "true"
步骤2:ALB监听器开启HTTP/2(仅ALB场景需要)
如果你使用的是ALB作为前端负载均衡,还需要在AWS控制台配置监听器开启HTTP/2:
- 进入AWS EC2控制台的「负载均衡器」页面,找到nginx-ingress对应的ALB
- 切换到「监听器」标签,选中HTTPS 443监听器,点击编辑
- 勾选「HTTP/2」选项后保存配置即可
如果你使用的是NLB(四层负载均衡),无需做本步骤配置,HTTP/2协商会直接由nginx-ingress处理。
验证生效
执行curl命令验证是否已经启用HTTP/2:curl -v --http2 https://<你的业务域名>
如果返回结果中出现< HTTP/2 200字段,说明HTTP/2已经成功启用。
内容的提问来源于stack exchange,提问作者Ted Hoang
相关产品推荐
相关产品推荐

