nginx server_name指令中使用的正则表达式

时间:2013-03-03 17:26:51

标签: regex nginx

我可以帮助解释nginx server_name中使用的正则表达式。该指令是:

server_name (?<account>.+)\.mydomain\.com$

虽然我没有得到第一个?的观点。另外,我如何将其展开以匹配除*.mydomain.com之外的web3.mydomain.com。即。

this.mydomain.com

应该匹配,但是:

web3.mydomain.com

不应该匹配。

感谢。

1 个答案:

答案 0 :(得分:2)

?<account>只是naming the capture group的一种方式。因此,内部ngix可能会引用名为“account”的.+,而不仅仅是“捕获组#1”。

  

此外,我如何将其展开以匹配除* web3.mydomain.com之外的* .mydomain.com

您可以使用negated lookahead assertion

server_name (?!web3\.)(?<account>.+)\.mydomain\.com$

(?!web3\.)部分检查字符串是否以web3.开头,如果是,则整个表达式不匹配。

但是前瞻不是很有效率。也许您只是将ngix配置为首先查找与web3.mydomain.com匹配的内容,如果这不匹配,请尝试更通用的表达式?