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

Envoy中Safe Regex在外部授权过滤器中失效问题

问题解决:Safe_regex匹配路由禁用ExtAuthz失效

核心问题

你当前使用的正则表达式^/(css|img|assets)/存在匹配范围限制:它仅会匹配以/css/、/img/、/assets/(末尾带斜杠)开头的路径,但对于/css(无后续斜杠)、/css.style(无斜杠)这类路径无法命中,导致这些请求依然会走ExtAuthz校验,和预期不符。

而用三条prefix规则(/css、/img、/assets)时,prefix匹配逻辑是只要路径前缀完全匹配就生效,覆盖了所有以这些字符串开头的请求,所以能正常禁用ExtAuthz。

修正方案

调整safe_regex的正则表达式,让它匹配所有以/css、/img、/assets开头的路径,无论后续是否有斜杠或其他内容。修改后的路由匹配规则如下:

routes:
- match:
    safe_regex:
      google_re2: {}
      regex: "^/(css|img|assets)(/.*)?$"
  route:
    host_rewrite_literal: www.envoyproxy.io
    cluster: service_envoyproxy_io
  typed_per_filter_config:
    envoy.filters.http.ext_authz:
      "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
      disabled: true
- match:
    prefix: "/"
  route:
    host_rewrite_literal: www.envoyproxy.io
    cluster: service_envoyproxy_io    

正则说明

^/(css|img|assets)(/.*)?$的含义:

  • ^/(css|img|assets):匹配以/css、/img或/assets开头的路径
  • (/.*)?:可选的后续部分,匹配斜杠开头的任意内容(或没有)
  • $:匹配路径结尾,确保整个路径都符合前缀规则

这样就能覆盖所有目标路径,和三条prefix规则的匹配范围完全一致,从而正确禁用ExtAuthz校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:47:34