Nginx在匹配之前是否取消引用/取消网址字符?

Dav*_*Eyk 5 regex nginx

当我想匹配一个带有空格的URL时,空格可以编码为%20+.为了在Nginx正则表达式中匹配这个,我需要使用什么模式?

Nginx是否通过原样传递URL?

(?:%20|\+| )

或者,Nginx首先做一些不引用或不做的事吗?

(?:\+| )

+正常化?

yek*_*kta 1

虽然我快速浏览后没有在 Nginx 文档中找到任何参考资料,但根据我的测试,Nginx 将 HTTP 代码规范化为 unicode,使得“%20”与“\s”匹配。'+' 已经在 unicode 中,不需要标准化。

例如。/route/the%20test

应与(?:\s)

然而,我倾向于使用更安全的方法,例如:(?:(\s|\%20))