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

K8s中多路由Node.js应用配置Ingress后无法访问子路径问题求解

问题原因

你当前的Ingress配置存在两处错误导致所有请求都返回根路径内容:

  1. nginx.ingress.kubernetes.io/rewrite-target: /$1 注解的重写目标引用了捕获组$1,但你配置的path: /*没有对应的正则捕获组,导致$1始终为空,所有请求都会被重写为/传递给后端服务。
  2. 配置了host: bands.com规则的情况下,直接使用Ingress IP访问不会匹配到该规则,只有将bands.com绑定到Ingress IP后通过域名访问才能命中规则。

解决方案

你的Node.js服务本身就是直接匹配/acdc、/pinkfloyd这类原始路径,不需要路径重写,最简洁的调整方案如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress
  # 移除不需要的rewrite注解
spec:
  rules:
    # 无需域名限制可删除host字段,直接用Ingress IP访问
    # - host: bands.com
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: bands
                port:
                  number: 8080

该配置会将请求的原始路径原封不动传递给后端服务,完全匹配你Node.js代码里的路由规则。

如果需要保留rewrite规则,调整为如下配置即可:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
    # 无需域名限制可删除host字段
    - http:
        paths:
          # 增加正则捕获组匹配路径后缀
          - path: /(.*)
            pathType: Prefix
            backend:
              service:
                name: bands
                port:
                  number: 8080

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:57:00