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

如何在values.yaml中为NGINX Ingress配置重定向URL列表?

在Kubernetes NGINX Ingress的values.yaml中实现批量URL重定向

实现思路

借助NGINX Ingress的官方注解,通过NGINX的map指令定义重定向映射(对应IIS里的rewriteMap),再搭配重定向规则,就能在values.yaml里批量配置旧URL到新URL的跳转,完全不用直接修改NGINX的配置文件。

修改后的values.yaml完整配置

ingress:
  enabled: true
  annotations:
    ingress.kubernetes.io/rewrite-target: /
    # 在NGINX的http块中定义重定向映射表
    nginx.ingress.kubernetes.io/http-snippet: |
      map $request_uri $new_uri {
          default "";
          # 按格式添加旧URL->新URL的映射,按需扩展
          "/old-blog-post-1" "/new-blog/category/post-1";
          "/vanity-url-for-seo" "/product/featured-item";
          "/deprecated-page" "/";
          "/old-about" "/about-us";
      }
    # 在location块中添加重定向执行逻辑
    nginx.ingress.kubernetes.io/configuration-snippet: |
      # 匹配到映射表中的旧URL时,执行永久重定向
      if ($new_uri != "") {
          return 301 https://www.my-domain.com$new_uri;
      }
      # 保留原有的非www转www规则
      if ($host = 'my-domain.com') {
        rewrite ^ https://www.$host$request_uri permanent;
      }
    nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
  hosts:
    - host: www.my-domain.com
      paths:
        - path: /
          pathType: ImplementationSpecific
    - host: my-domain.com
      paths:
        - path: /
          pathType: ImplementationSpecific
  tls:
    - hosts:
        - www.my-domain.com
      secretName: production-tls
    - hosts:
        - my-domain.com
      secretName: production-without-www-tls

要点说明

  • map指令的正确位置:NGINX要求map指令必须在http块级别定义,所以用http-snippet注解来添加映射表,避免配置报错。
  • 映射表规则:default ""表示没有匹配到旧URL时,变量$new_uri为空;每一行"旧URL" "新URL";对应一条重定向规则,和IIS的rewriteMap用法逻辑完全一致。
  • 重定向逻辑:通过if ($new_uri != "")判断,只要匹配到映射表中的旧URL,就返回301永久重定向(适合SEO场景,传递权重),并且统一跳转到www域名,和现有规则保持一致。
  • 扩展性:后续新增或修改重定向,只需要在http-snippet的map块里添加/修改条目即可,维护起来非常方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 23:58:30