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

Kubernetes Nginx Ingress实现旧站分路径重定向至新站的配置问询

解决方案

方式一:修改现有configuration-snippet配置

直接在原配置里添加根路径的判断逻辑,替换单一重定向规则:

nginx.ingress.kubernetes.io/configuration-snippet: |
  if ($host = "old.mysite.com" and $request_uri = "/") {
    return 301 https://new.mysite.com/homepage;
  }
  if ($host = "old.mysite.com" and $request_uri != "/") {
    return 301 https://new.mysite.com$request_uri;
  }

逻辑说明:

  • 第一个判断专门匹配旧站点的根路径请求,直接重定向到新站点的/homepage
  • 第二个判断覆盖旧站点所有非根路径请求,保持原有路径结构重定向到新站点

方式二:使用独立Ingress资源(推荐)

为了规避Nginx if 指令的潜在兼容性问题,更贴合Kubernetes Ingress的最佳实践,可以拆分两个Ingress规则分别处理:

处理根路径重定向的Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: old-site-root-redirect
  annotations:
    nginx.ingress.kubernetes.io/permanent-redirect: "https://new.mysite.com/homepage"
spec:
  rules:
  - host: old.mysite.com
    http:
      paths:
      - path: /
        pathType: Exact
        backend:
          service:
            name: dummy-service  # 只需集群中存在的服务,无需实际提供业务响应
            port:
              number: 80

处理子路径重定向的Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: old-site-subpath-redirect
  annotations:
    nginx.ingress.kubernetes.io/permanent-redirect: "https://new.mysite.com$request_uri"
spec:
  rules:
  - host: old.mysite.com
    http:
      paths:
      - path: /(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: dummy-service
            port:
              number: 80

逻辑说明:

  • 第一个Ingress用Exact路径类型精确匹配根路径/,直接指向目标重定向地址
  • 第二个Ingress用正则路径/(.*)匹配所有非根路径,通过$request_uri保留原路径结构完成重定向
  • 注意:dummy-service需要是集群中已存在的服务(可以是一个无业务逻辑的空服务),因为Ingress必须关联后端服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:47:12