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

为何配置aws-load-balancer-ssl-ports注解后NLB仍仅开放80端口?

问题解决:NLB仅开放80端口而非443的修复方案

问题根源

你当前的配置只给Service加了NLB相关注解,但APISIX Helm Chart默认仅暴露80端口,未定义443端口。NLB会自动关联Service中声明的端口,所以即便配置了SSL证书,也只会映射已存在的80端口。

修复步骤

1. 修改Helm Values,添加443端口配置

在ArgoCD应用的values中,给service添加ports字段,明确声明443端口(命名为https),同时按需保留80端口。修改后的完整配置片段如下:

service:
  type: LoadBalancer
  ports:
    - name: http
      port: 80
      targetPort: 80
    - name: https
      port: 443
      targetPort: 443
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tls
    service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: Environment=Prod
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:eu-north-1:..........
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"

2. 关键配置说明

  • ports字段:显式声明443端口并命名为https,让NLB识别该端口需要绑定SSL证书
  • service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https":指定SSL证书应用到名为https的端口上,必须和ports中的端口名称完全一致
  • targetPort: 443:确保Service将443流量转发到APISIX Pod的443端口(需确认APISIX Pod已启用443监听,若未启用需同步配置APISIX的SSL参数)

3. 同步ArgoCD应用

在ArgoCD控制台或通过命令行执行同步操作,等待应用更新完成后,检查AWS NLB的监听端口,此时应出现443端口(若不需要80端口,可删除ports中的http条目)。

额外验证

如果APISIX Pod本身未开启443监听,需在values中补充APISIX的SSL配置:

apisix:
  ssl:
    enable: true
    listen_port: 443

确保Pod能接收443端口的流量,避免NLB的443端口出现健康检查失败。

内容的提问来源于stack exchange,提问作者Yagel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 20:08:14