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

如何在Nginx Ingress的auth-url中使用路径正则提取的参数?

解决方案:动态提取路径组名传递给oauth2-proxy

Ingress Nginx的路径正则捕获组($1、$2这类)仅能直接用于rewrite-target注解,无法直接在auth-url中引用,需要通过Nginx配置片段自定义变量中转实现需求,具体配置如下:

完整Ingress配置示例

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    # 自定义Nginx配置片段:提取路径中的组名到变量$allowed_group
    nginx.ingress.kubernetes.io/configuration-snippet: |
      set $allowed_group "";
      if ($request_uri ~* "^/resources/(\w+)/.*$") {
        set $allowed_group $1;
      }
    # 在auth-url中引用自定义变量
    nginx.ingress.kubernetes.io/auth-url: "https://###/oauth2/auth?allowed_groups=$allowed_group"
    nginx.ingress.kubernetes.io/auth-signin: "https://###/oauth2/start?rd=$escaped_request_uri"
  name: app
spec:
  ingressClassName: nginx
  rules:
  - host: my.app.com
    http:
      paths:
      - path: /resources/(\w+)/?(.*)
        pathType: Prefix
        backend:
          service:
            name: app
            port:
              number: 80

关键配置说明

  • configuration-snippet:通过Nginx的if指令结合正则匹配,从请求URI中提取组名(\w+匹配字母数字下划线,若组名包含特殊字符可调整正则为[^/]+,匹配除斜杠外所有字符),并将其存入自定义变量$allowed_group。
  • auth-url:直接引用自定义变量$allowed_group作为allowed_groups参数值,oauth2-proxy会收到动态的组名参数。
  • path规则:调整为/resources/(\w+)/?(.*),确保能匹配所有/resources/[组名]/xxx或/resources/[组名]格式的请求,同时rewrite-target的$2对应路径中组名后的部分,保证后端服务能收到正确的请求路径。

验证方法

  1. 查看Ingress Nginx控制器的Pod日志,确认Nginx配置已正确生成包含变量提取的规则。
  2. 查看oauth2-proxy的日志,检查allowed_groups参数是否已正确携带路径中的组名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 13:35:39