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

EKS ALB Ingress配置非www域名转www时出现404错误及重定向失效的问题求助

解决EKS ALB Ingress非www到www重定向及404问题

我来帮你排查下这个配置里的问题,你遇到的404和重定向失效,核心是Ingress规则的逻辑顺序和host配置不完整导致的:

你的原配置存在的问题

  1. 重复Path规则冲突:在test.com的host下,你定义了三个相同的path: /规则。ALB会按照规则顺序匹配请求,第一个ssl-redirect会处理HTTP到HTTPS的跳转,但当请求已是HTTPS时,第二个redirect-to-www会生效;但跳转到www.test.com后,你的Ingress里没有针对该域名的路由规则,ALB找不到对应后端服务,自然返回404。
  2. 缺失www域名路由规则:当你把host改成www.test.com时,test.com的规则被移除,失去了重定向的来源,导致重定向完全失效。

修正后的Ingress配置

下面是调整后的完整配置,拆分了两个host规则,分别处理非www域名的重定向和www域名的正常服务转发:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: test
  name: test
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: instance
    kubernetes.io/ingress.class: alb
    # 确保证书同时覆盖test.com和www.test.com(你的两个ARN应该已包含)
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:ap-south-1:851874770356:certificate/ebdbe-4b05-b0a5-e8238533,arn:aws:acm:ap-south-1:8518746:certificate/734ffa35-3e17-497c-b5ca-5719e
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
    # HTTP转HTTPS的重定向动作
    alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
    # 非www转www的重定向动作(301更利于SEO)
    alb.ingress.kubernetes.io/actions.redirect-to-www: >
      {"Type":"redirect","RedirectConfig":{"Host":"www.test.com","Port":"443","Protocol":"HTTPS","StatusCode":"HTTP_301"}}
spec:
  rules:
  # 处理非www域名test.com的所有请求
  - host: test.com
    http:
      paths:
      # 先把HTTP请求重定向到HTTPS
      - path: /
        pathType: Prefix
        backend:
          service:
            name: ssl-redirect
            port:
              name: use-annotation
      # 再把HTTPS的test.com请求重定向到www.test.com
      - path: /
        pathType: Prefix
        backend:
          service:
            name: redirect-to-www
            port:
              name: use-annotation
  # 处理www域名的正常服务转发
  - host: www.test.com
    http:
      paths:
      # 先把HTTP请求重定向到HTTPS
      - path: /
        pathType: Prefix
        backend:
          service:
            name: ssl-redirect
            port:
              name: use-annotation
      # HTTPS请求转发到dashboard服务
      - path: /
        pathType: Prefix
        backend:
          service:
            name: "dashboard"
            port:
              number: 3000

关键配置说明

  1. 拆分两个Host规则:明确区分test.com(负责重定向)和www.test.com(负责服务转发),确保跳转到www域名后,ALB能找到对应后端服务,避免404。
  2. 调整重定向顺序:每个Host下都先处理HTTP到HTTPS的跳转,再处理业务逻辑(重定向或服务转发),保证所有请求最终都是HTTPS协议。
  3. 使用301永久重定向:把原配置的302改成301,更适合域名跳转场景,对搜索引擎友好。

验证步骤

  1. 应用修正后的Ingress配置:kubectl apply -f your-ingress-file.yaml -n test
  2. 等待ALB更新配置(通常需要1-2分钟)
  3. 访问http://test.com,应先跳转到https://test.com,再跳转到https://www.test.com并正常加载dashboard服务。
  4. 访问http://www.test.com,会直接跳转到https://www.test.com并加载服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 20:08:11