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

K8s Ingress问题:如何禁止通过//api路径访问后端服务

解决Nginx Ingress允许//api访问的问题

当前你的Ingress配置中,Nginx默认会自动合并URL中的多个斜杠,导致//api被当作/api处理,从而命中你的路径规则。要禁止这种访问,需要做以下调整:

1. 禁用斜杠合并

添加nginx.ingress.kubernetes.io/merge-slash: "false"注解,让Nginx保留URL中的原始斜杠,不再自动合并多斜杠为单斜杠。

2. 确保路径仅匹配单斜杠开头的/api

现有路径规则/api(/|$)(.*)在禁用斜杠合并后,只会匹配以单个斜杠开头的/api路径,//api会因路径前缀不匹配而无法命中该规则。

修改后的完整Ingress配置

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-dev-ingress
  annotations:
     nginx.ingress.kubernetes.io/rewrite-target: /$2
     nginx.ingress.kubernetes.io/merge-slash: "false"  # 新增:禁用斜杠合并
     cert-manager.io/cluster-issuer: acme-issuer
spec:
  ingressClassName: public
  rules:
  - host: "test-app.xyz"
    http:
      paths:
      - pathType: ImplementationSpecific
        path: /api(/|$)(.*)
        backend:
          service:
            name: test-dev-api-service
            port:
              number: 80

验证效果

应用修改后的配置后:

  • test-app.xyz/api及test-app.xyz/api/xxx可正常访问后端服务
  • test-app.xyz//api会返回404,无法访问后端服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:04:55