Nginx - 正则表达式的位置

时间:2016-11-27 12:36:28

标签: regex nginx lua nginx-location openresty

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

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个正则表达式模式。这种方法可以吗?

1 个答案:

答案 0 :(得分:1)

您的正则表达式表达式:404, Expected datasnap context in request http://YourServerIP:YourPort/datasnap/tunnel可以缩减为:

/(.*abc.*|.*def.*|.*ghk.*)/

由于任何location ~ (abc|def|ghk).*/ { ... } URI都以nginx开头,因此您无需测试/

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

因此,对于location,变量/12abc34/将设置为$1