Cloud Armor规则配置:如何在单行规则中允许多个请求路径
Cloud Armor多路径匹配单行规则解决方案
你之前的写法逻辑错误,'[service,register,state]'.contains(request.path)是检查固定字符串里是否包含请求路径,而非请求路径是否包含列表中的任意值,所以无法生效。以下是两种可行的实现方式:
方式一:多contains逻辑或组合
适合路径数量较少的场景,用||(逻辑或)连接多个路径匹配条件,注意用括号明确优先级:
(request.path.contains('service') || request.path.contains('register') || request.path.contains('state')) && origin.region_code.matches('^(AT|DE|CH)$')
方式二:正则表达式匹配
适合路径数量较多的场景,用matches结合正则表达式一次性匹配多个路径:
request.path.matches('^/(service|register|state)') && origin.region_code.matches('^(AT|DE|CH)$')
- 若需匹配包含这些字符串的任意路径(而非开头),可调整正则为
'.*(service|register|state).*' - 正则里的
^/是确保路径以/开头,可根据你的实际路径格式调整
Cloud Armor规则基于CEL语法,所有条件需符合CEL的逻辑判断规范,不能直接用数组包含的写法。
内容的提问来源于stack exchange,提问作者mati kepa
相关产品推荐
相关产品推荐

