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

如何在Nginx Ingress中实现域名到后端的URL重写?

实现方案及正确Ingress配置

完全可以实现你要的需求,之前的配置失效主要是因为没开启正则匹配,且路径与重写规则的变量对应有误。以下是正确的配置方案:

完整Ingress配置

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: customer-shop-ingress
  namespace: shop
  annotations:
    kubernetes.io/ingress.class: "nginx"
    # 开启正则路径匹配,这是正则生效的关键
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:  
  rules:
    # 处理example.com的请求,转发至shop-service的/11111路径下
    - host: example.com
      http:
        paths:
          - path: /(.*)
            # 正则路径需使用该类型,让Ingress控制器自行处理匹配逻辑
            pathType: ImplementationSpecific
            backend:
              service:
                name: shop-service
                port:
                  number: 80
            # 重写规则:将请求路径替换为/11111 + 捕获到的路径部分
            nginx.ingress.kubernetes.io/rewrite-target: /11111/$1
    # 处理other-example.com的请求,转发至shop-service的/22222路径下
    - host: other-example.com
      http:
        paths:
          - path: /(.*)
            pathType: ImplementationSpecific
            backend:
              service:
                name: shop-service
                port:
                  number: 80
            nginx.ingress.kubernetes.io/rewrite-target: /22222/$1

关键配置说明

  • 开启正则匹配:必须添加nginx.ingress.kubernetes.io/use-regex: "true"注解,否则Ingress不会解析路径中的正则表达式。
  • 路径匹配规则:path: /(.*)会匹配域名下所有请求路径,(.*)会捕获根路径(空字符串)或后续的路径部分。
  • 重写规则:rewrite-target: /11111/$1会把捕获到的路径部分追加到/11111后,实现:
    • http://example.com → shop-service/11111
    • http://example.com/path/bar → shop-service/11111/path/bar
  • 路径类型:正则路径不能使用Prefix或Exact,必须指定pathType: ImplementationSpecific。

验证步骤

  1. 应用配置:kubectl apply -f <你的Ingress配置文件>.yaml -n shop
  2. 检查Ingress状态:kubectl describe ingress customer-shop-ingress -n shop,确认规则已正确加载
  3. 测试请求:用curl或浏览器访问example.com,验证是否正确转发到对应路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:25:38