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

如何配置Nginx Ingress仅开放指定路径,其余路径返回403?

配置Nginx Ingress实现指定路径访问控制

要实现仅允许访问/code-refiner/和/v1/unsubscribed/*路径,其余所有路径返回403错误,可按以下方式修改Ingress配置:

修改后的Ingress配置

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: code-refiner-service-ingress-external
  namespace: backend
  annotations:
    kubernetes.io/ingress.class: nginx-external
    # 插入自定义Nginx规则,拦截未匹配路径返回403
    nginx.ingress.kubernetes.io/configuration-snippet: |
      location / {
        deny all;
        return 403;
      }
spec:
  rules:
  - host: code-refiner.example.com
    http:
      paths:
      # 允许访问/code-refiner/前缀路径
      - backend:
          service:
            name: code-refiner-service
            port:
              number: 80
        path: /code-refiner/
        pathType: Prefix
      # 允许访问/v1/unsubscribed/前缀路径(包含所有子路径)
      - backend:
          service:
            name: code-refiner-service
            port:
              number: 80
        path: /v1/unsubscribed/
        pathType: Prefix

关键配置说明

  • 路径匹配优先级:Nginx Ingress会优先匹配更具体的路径规则,因此先定义允许访问的两个前缀路径,再通过configuration-snippet设置全局默认拦截规则。
  • 自定义Nginx规则:nginx.ingress.kubernetes.io/configuration-snippet注解用于插入原生Nginx配置,这里的规则会拦截所有未被前面路径匹配到的请求,直接返回403错误。
  • 路径类型说明:使用Prefix类型匹配路径前缀,确保/v1/unsubscribed/下的所有子路径(如/v1/unsubscribed/123)都能被正常访问。

如果后端服务需要路径重写(比如将/code-refiner/xxx重写为/xxx),可添加重写注解并调整路径规则:

# 在metadata.annotations中添加
nginx.ingress.kubernetes.io/rewrite-target: /$2
# 对应调整路径规则,以/code-refiner/为例
path: /code-refiner(/|$)(.*)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:20:26