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

Kong Ingress Controller配置:路由请求到服务时如何保留完整路径不截断

Kong Ingress Controller配置:路由请求到服务时如何保留完整路径不截断

我来帮你搞定这个路径被截断的问题!你遇到的核心问题是Ingress的路径匹配规则和strip-path注解的配置没配合好,导致Kong把请求里的/weather部分给去掉了。

问题根源分析

你当前的Ingress配置里,path设为/weather且pathType是ImplementationSpecific,再加上可能strip-path注解用了字符串形式的'false'——有些Kong版本会把非空字符串当成布尔值true处理,这就完全达不到你想要的保留路径的效果,最终导致服务只收到/London这样的截断路径。

正确的配置方案

修改你的weather-routing.yml文件,调整路径匹配规则并确保strip-path注解用正确的布尔值:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: weather-route
  annotations:
    konghq.com/strip-path: false  # 这里用布尔值,不要加引号
spec:
  ingressClassName: kong
  rules:
  - http:
      paths:
      - path: /weather/*
        pathType: Prefix
        backend:
          service:
            name: weather
            port:
              number: 3000

配置说明

  • path: /weather/* + pathType: Prefix:这样Kong会匹配所有以/weather开头的请求(比如/weather/London、/weather/Paris等),确保所有相关请求都能命中这个路由规则。
  • konghq.com/strip-path: false:明确告诉Kong不要截断请求路径,把完整的URL路径(包括/weather部分)原封不动转发给后端服务。

验证步骤

  1. 应用修改后的配置:
kubectl apply -f weather-routing.yml
  1. 重新发送测试请求:
curl -i 127.0.0.1:80/weather/London

这时候你的Node.js服务应该就能收到完整的/weather/London路径,返回正确的天气JSON数据了。

备选方案(正则匹配)

如果你需要更复杂的路径匹配规则,也可以用正则表达式的方式配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: weather-route
  annotations:
    konghq.com/strip-path: false
spec:
  ingressClassName: kong
  rules:
  - http:
      paths:
      - path: /weather(/|$)(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: weather
            port:
              number: 3000

备注:内容来源于stack exchange,提问作者mikyll98

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 09:49:51