如何配置AKS上的NGINX Ingress同时监听443和5601端口的HTTPS流量
AKS上NGINX Ingress配置5601端口SSL监听的解决方案
问题背景
在AKS环境中通过Helm部署NGINX Ingress后,已完成以下配置:
- 通过
service.customPorts配置K8s Service及Azure负载均衡器监听5601端口,LB已生成对应流量规则 - 通过
controller.customPorts配置NGINX控制器Pod监听容器端口5601 - 定义了指向后端服务的Ingress路由规则
但5601端口的HTTPS流量无法正常转发,NGINX控制器日志无该端口请求记录,查看运行时NGINX配置(kubectl exec -it -n nginx <pod名称> -- nginx -T)发现,NGINX仅监听80和443端口。
核心原因
之前的配置仅完成了K8s Service与容器的端口映射,但未告知NGINX软件本身需要监听5601端口并启用SSL配置。
解决步骤
1. 更新Helm Values配置
修改NGINX Ingress的values.yaml,添加以下关键配置:
# 配置Service的自定义端口(已配置的可跳过,确认参数正确即可) service: customPorts: - name: https-5601 port: 5601 targetPort: 5601 protocol: TCP # 配置控制器容器的自定义端口(已配置的可跳过) controller: customPorts: - name: https-5601 containerPort: 5601 protocol: TCP # 关键:告知NGINX将5601视为SSL端口,自动生成监听规则 controller: extraArgs: ssl-ports: "443,5601" # (可选)如果5601端口需要使用独立SSL证书,可通过serverSnippets自定义配置 controller: serverSnippets: | listen 5601 ssl; listen [::]:5601 ssl; # 若使用独立证书,替换以下secret名称 ssl_certificate /etc/nginx/secrets/your-5601-tls-secret/tls.crt; ssl_certificate_key /etc/nginx/secrets/your-5601-tls-secret/tls.key;
2. 应用Helm配置更新
执行Helm升级命令,让配置生效:
helm upgrade nginx-ingress ingress-nginx/ingress-nginx -n nginx -f values.yaml
3. 验证配置
- 等待NGINX控制器Pod重启完成后,再次查看运行时NGINX配置:
kubectl exec -it -n nginx <pod名称> -- nginx -T | grep -E "listen.*5601"
若输出包含listen 5601 ssl;和listen [::]:5601 ssl;,说明配置生效。
- 测试5601端口的HTTPS流量,确认可正常转发到后端服务。
注意事项
- 若5601端口与443端口使用同一SSL证书,仅需配置
ssl-ports参数即可,无需额外的serverSnippets。 - 确保Azure负载均衡器的5601端口规则已正确指向K8s Service的5601端口。
内容的提问来源于stack exchange,提问作者ragingwookie
相关产品推荐
相关产品推荐

