我正在尝试使用带有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
}
由于
答案 0 :(得分:1)
如果您的正则表达式中有大括号,nginx
要求引用它。它是the rewrite directive提到的,但我认为它适用于接受正则表达式的大多数nginx
指令。