You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 03:53:12