位置路径或server_name中的Nginx正则表达式

时间:2017-07-05 17:27:55

标签: regex nginx

我正在尝试使用带有nginx的正则表达式来允许包含某些条件但没有成功的请求。

例如其中一个错误ginx: [emerg] pcre_compile() failed: missing ) in "(^/(unsafe)\/([0-9]" in /etc/nginx/sites-enabled/file.conf:33

根据https://regex101.com/,正则表达式应该没问题,所以我猜nginx和这个正则表达式的问题,所以我需要一些帮助如何去做。

正则表达式:

^(http|https):\/\/(my[.]domain[.]com)\/(unsafe)\/([0-9]{0,4})x([0-9]{0,4})\/((ch)|[a-z0-9]{0,32})\/(([3_]+[a-z0-9]{0,32}\.jpg)|([c_1_]+[a-z0-9]{0,32}\.jpg)|([a-z0-9]{0,32}\.jpg)|(fb\/[0-9]{0,6}.jpg)|([a-z0-9]{0,6}\/[0-9]{0,6}.jpg))

的url:

https://my.domain.com/unsafe/1530x55/7550/3_c892b2c2de030f40.jpg
https://my.domain.com/unsafe/1030x1345/71b0c5d3f50/c_1_c8928dc3e030f40.jpg
https://my.domain.com/unsafe/1030x4443/79481b0c5d3f50/c892333e030f40.jpg
https://my.domain.com/unsafe/0x0/ch/fb/157233.jpg
https://my.domain.com/unsafe/0x0/ch/6chars/123456.jpg

1

server_name ~^(my[.]domain[.]com)\/(unsafe)\/([0-9]{0,4})x([0-9]{0,4})\/((ch)|[a-z0-9]{0,32})\/(([3_]+[a-z0-9]{0,32}\.jpg)|([c_1_]+[a-z0-9]{0,32}\.jpg)|([a-z0-9]{0,32}\.jpg)|(fb\/[0-9]{0,6}.jpg)|([a-z0-9]{0,6}\/[0-9]{0,6}.jpg)); 或者:

location ~ (/(unsafe)\/([0-9]{0,4})x([0-9]{0,4})\/((ch)|[a-z0-9]{0,32})\/(([3_]+[a-z0-9]{0,32}\.jpg)|([c_1_]+[a-z0-9]{0,32}\.jpg)|([a-z0-9]{0,32}\.jpg)|(fb\/[0-9]{0,6}.jpg)|([a-z0-9]{0,6}\/[0-9]{0,6}.jpg))) { empty }

由于

1 个答案:

答案 0 :(得分:1)

如果您的正则表达式中有大括号,nginx要求引用它。它是the rewrite directive提到的,但我认为它适用于接受正则表达式的大多数nginx指令。