繁体   English   中英

Nginx-正则表达式位置

[英]Nginx - regex location

因此,我有一个基于正则表达式的位置规则,如下所示:

location ~ /(abc.*xyz|def.*zxy|ghk.*qwe)/

我可以检查正则表达式的哪一部分产生了匹配项吗? 意思是如果网址是

/12abc34/

比我想知道它被匹配

.*abc.*

有办法吗?

我正在AWS的Debian VM上运行使用lua-module编译的最新nginx。

------------更新-------------

我正在考虑使用内部位置,但这将很丑陋:

 location ~ /(abc.*xyz|def.*zxy|ghk.*qwe)/
{
    location ~ /(abc.*xyz){...}
    location ~ /(def.*zxy){...}
...
}

现在我有60种正则表达式模式。 这样可以吗?

您的正则表达式:/(.* /(.*abc.*|.*def.*|.*ghk.*)/可以简化为:

location ~ (abc|def|ghk).*/ { ... }

由于任何nginx URI都以/开头,因此您无需测试/.*

括号中的正则表达式部分在location块中被捕获$1

因此,在/12abc34/的情况下,变量$1将设置为abc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM