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

Nginx Ingress路径重写转发后端服务返回404问题求助

故障原因

配置存在三处问题直接触发404响应:

  • 重写规则捕获组序号匹配错误:你定义的路径正则为/httpbin(/|$)(.*),包含两个捕获组:
    • $1 匹配/httpbin后紧跟的斜杠或路径结束标识
    • $2 匹配/httpbin前缀后的真实业务路径
      当前配置rewrite-target: /$1会把请求重写到//或/,无法匹配后端httpbin的对应路径。
  • 路径类型配置错误:pathType: Prefix为字面量前缀匹配模式,不会解析path字段中的正则语法,控制器会直接把/httpbin(/|$)(.*)当成普通字符串路径做匹配,根本无法命中你发起的/httpbin/anything请求。
  • 冗余配置引发潜在冲突:你添加的configuration-snippet末尾斜杠跳转规则属于多余配置,nginx-ingress的标准rewrite逻辑已经自动兼容该场景,额外添加反而可能引发循环跳转问题。
修复配置

直接替换原有Ingress配置即可:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: mikie-ingress
  namespace: mikie
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  ingressClassName: nginx
  rules:
    - host: abczzz.com
      http:
        paths:
          - path: /httpbin(/|$)(.*)
            pathType: ImplementationSpecific
            backend:
              service:
                name: httpbin-service
                port:
                  number: 8999
效果验证

配置生效1-2分钟后执行测试命令:

curl -I -k http://abczzz.com/httpbin/anything

将正常返回200状态码,后端httpbin服务收到的请求路径为/anything,符合前缀剥离的需求。
该配置自动兼容以下访问场景:

  • 访问/httpbin:自动跳转到/httpbin/,最终转发到后端根路径/
  • 访问/httpbin/:直接转发到后端根路径/
  • 访问/httpbin/<任意子路径>:自动剥离/httpbin前缀,将子路径透传给后端服务

内容的提问来源于stack exchange,提问作者A Bit of Help

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:51:56