所以我有一个基于正则表达式的位置规则,如下所示:
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个正则表达式模式。这种方法可以吗?
答案 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
。