0
我试图将5G Blacklist从Apache(.htaccess)转换为Nginx(.conf)。有在.htaccess的线,是造成问题:相同的正则表达式在Apache和Nginx中表现不同
<IfModule mod_alias.c>
RedirectMatch 403 (\,|\)\+|/\,/|\{0\}|\(/\(|\.\.\.|\+\+\+|\||\\\"\\\")
</IfModule>
我已经转换它的.conf如下:
代码包含在HTTP块
map $request_uri $bad_uri {
default 0;
"~*(\,|\)\+|/\,/|\{0\}|\(/\(|\.\.\.|\+\+\+|\||\\\"\\\")" 1;
}
包含代码in server block
if ($bad_uri) {
return 403;
}
据我所知,Apache和Nginx都使用perl regex,所以在从前者转换到后者时不需要做任何改变。但是,下面的URI是在Nginx的给403,但做工精细在Apache:
www.example.com/some,url,with,commas
www.example.com/?q=some,url ,用,逗号
你能不能用简单的英语解释,这个正则表达式应该怎么办呢? –
@AlexeyTen 5G黑名单应该阻止不好的机器人,刮板,URL扫描等。这是来自该列表的一行。从我有限的知识中,我可以看出,这个正则表达式应该匹配任何具有''''+''/,/''{0}''(/(''''''+++''|''或'\“\”' –
所以,我无法理解。应该阻止或不阻止'some,url,with,commas'吗? –