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'嗎? –