相對于 Apache,Nginx 占用的系統資源更少,更適合 VPS 使用。惡意盜鏈的 User Agent 無處不在,博客更換到 WordPress 沒幾天,就被 SPAM(垃圾留言)盯上,又被暴力破解后臺用戶名密碼。以前介紹過 Apache 使用 .htaccess 屏蔽惡意 User Agent,今天來介紹 Nginx 屏蔽惡意 User Agent請求的方法。
先上規則&注釋
#禁用未初始化變量警告uninitialized_variable_warn off;#匹配各種 bad user agent,返回403錯誤if ($http_user_agent ~* "embeddedwb|NSPlayer|WMFSDK|qunarbot|mj12bot|ahrefsbot|Windows 98|MSIE 6.0; Windows 2000|EasouSpider|Sogou web spider") {return 403;}#匹配POST方法,給變量iftemp賦值if ($request_method ~* "POST") {set $iftemp X;}#匹配 bad user agent,給變量iftemp賦值;這幾個UA主要是發垃圾留言的if ($http_user_agent ~* "MSIE 6.*NET|MSIE 7.*NET|MSIE 6.*SV1|MSIE 6.0; Windows NT 5.0") {set $iftemp "${iftemp}Y";}#如果變量iftemp符合上面兩個條件,返回403錯誤if ($iftemp = XY) {return 403;}
禁用未初始化變量警告,不然會不停寫入警告到錯誤日志error.log,如下
Nginx 規則不支持2個以上的條件判斷,繞個路,通過給變量兩次賦值來完成2個條件判斷。
Nginx 規則也是使用正則表達式匹配字符串,分析日志,根據需要自己定制。
檢驗成果的時候到了
EasouSpider 和 Sogou web spider,再也不見。
新聞熱點
疑難解答