如何在Nginx配置文件中转义竖线(|)字符?
Nginx正则中转义竖线(|)的正确方式
在常规正则表达式里,用\|就能转义竖线,但Nginx配置文件里这么写不会生效——因为Nginx的配置解析器会先处理反斜杠:单个\会被配置解析器直接吃掉,传给正则引擎的就只剩|,自然会被当成正则的OR逻辑,导致匹配范围出错。
针对你给出的配置,正确写法是把\|改成\\|,让Nginx配置解析器保留一个\传给正则引擎,这样正则才能识别出这是需要匹配的竖线字符:
# Don't use the cache only for these users: (user1 & user2) if ($http_cookie ~* "wordpress_logged_in_.+=(user1|user2)\\|.+") { set $no_cache 1; set $bypass_cache 1; }
本质上,Nginx配置中的正则需要双重转义特殊字符,因为配置解析器会先处理一层反斜杠。
内容的提问来源于stack exchange,提问作者Mojtaba Rezaeian
相关产品推荐
相关产品推荐

