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

Kubernetes集群中Nginx Ingress路径重写无法转发至指定端点

解决Nginx Ingress路径重写404问题

首先要确认你的Nginx Ingress Controller版本,不同版本的重写规则语法差异很大,这是导致404的核心原因。

情况1:Nginx Ingress Controller版本 >= 0.22.0

这个版本起采用了新的重写语法,需要用$captured_groups匹配路径捕获组,同时路径需配置正则分组:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: image-self-service-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  - host: url-to-site
    http:
      paths:
      - path: /profile(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: image-self-service
            port:
              number: 8080
  • 路径/profile(/|$)(.*)会匹配/profile、/profile/及/profile/xxx所有相关请求
  • rewrite-target: /$1会将请求重写到后端根路径/,因为第一个捕获组(/|$)最终拼接后就是根路径

情况2:Nginx Ingress Controller版本 < 0.22.0

旧版本使用传统正则分组引用,用$1、$2对应捕获组内容:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: image-self-service-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - host: url-to-site
    http:
      paths:
      - path: /profile(/|$)(.*)
        backend:
          serviceName: image-self-service
          servicePort: 8080
  • 路径/profile(/|$)(.*)的第二个捕获组(.*)为空时,/+$2就对应后端根路径
  • 若有后续子路径,也能自动重写到后端的对应路径

验证步骤

  • 检查Ingress部署状态:执行kubectl get ingress确认状态为READY
  • 查看Ingress Controller日志:执行kubectl logs -n <ingress命名空间> <ingress-pod名称>,核对请求路由和重写逻辑是否符合预期
  • 验证后端服务连通性:执行kubectl run -it --rm --image=curlimages/curl curl-test -- curl image-self-service:8080,确认服务本身能正常返回内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:06:04