Nginx防盜鏈根據(jù)UA屏蔽惡意User Agent請求(防蜘蛛)
相對于 Apache,Nginx 占用的系統(tǒng)資源更少,更適合 VPS 使用。惡意盜鏈的 User Agent 無處不在,博客更換到 WordPress 沒幾天,就被 SPAM(垃圾留言)盯上,又被暴力破解后臺用戶名密碼。以前介紹過 Apache 使用 .htaccess 屏蔽惡意 User Agent,今天來介紹 Nginx 屏蔽惡意 User Agent請求的方法。
先上規(guī)則&注釋
#禁用未初始化變量警告 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主要是發(fā)垃圾留言的 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,如下
2014/09/11 09:21:11 [warn] 18649#0: *132 using uninitialized “iftemp” variable, client: 220.181.51.209, server: www.wilf.cn, request: “GET /wp-content/themes/dazzling/inc/fonts/glyphicons-halflings-regular.woff HTTP/1.0”, host: “www.wilf.cn”, referrer: “http://www.wilf.cn/”
2014/09/11 09:21:11 [warn] 18649#0: *92 using uninitialized “iftemp” variable, client: 66.249.79.55, server: www.wilf.cn, request: “GET /page/14?mod=pad&act=view&id=741 HTTP/1.1”, host: “www.wilf.cn”
Nginx 規(guī)則不支持2個以上的條件判斷,繞個路,通過給變量兩次賦值來完成2個條件判斷。
Nginx 規(guī)則也是使用正則表達(dá)式匹配字符串,分析日志,根據(jù)需要自己定制。
檢驗成果的時候到了
183.60.214.51 — [10/Sep/2014:22:16:18 +0800] — Bytes: 13507 — GET /?mod=pad&act=view&id=460 HTTP/1.1 — 403 — – — Mozilla/5.0 (compatible; EasouSpider; +http://www.easou.com/search/spider.html) — – — –
220.181.125.169 — [11/Sep/2014:09:38:15 +0800] — Bytes: 169 — GET /page/51?mod=wap&act=AddCom&inpId=860 HTTP/1.1 — 403 — – — Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07) — – — –
EasouSpider 和 Sogou web spider,再也不見。
相關(guān)文章
詳解Nginx 13: Permission denied 解決方案
這篇文章主要介紹了詳解Nginx 13: Permission denied 解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07詳解Nginx proxy_pass的一個/斜杠引發(fā)的血案
這篇文章主要介紹了詳解Nginx proxy_pass的一個/斜杠引發(fā)的血案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11nginx+tomcat實現(xiàn)負(fù)載均衡,使用redis session共享
這篇文章主要介紹了nginx tomcat負(fù)載均衡 使用redis session共享,有興趣的同學(xué)可以了解一下。2016-12-12nginx實現(xiàn)反向代理出現(xiàn)502的問題解決
本文主要介紹了nginx實現(xiàn)反向代理出現(xiàn)502的問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08nginx?80端口配置多個location無效訪問404問題
這篇文章主要介紹了nginx?80端口配置多個location無效訪問404問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06Nginx配置PHP的Yii與CakePHP框架的rewrite規(guī)則示例
這篇文章主要介紹了Nginx配置PHP的Yii與CakePHP框架的rewrite規(guī)則示例,是這兩款高人氣框架使用Nginx的關(guān)鍵配置點,需要的朋友可以參考下2016-01-01Nginx上配置Basic Authorization登錄認(rèn)服務(wù)證的教程
現(xiàn)在我們所使用的包括社交網(wǎng)絡(luò)API等開放平臺授權(quán)獲得用戶的用戶名和密碼一般有兩種認(rèn)證方式,一種是Basic Auth,一種是OAuth,這里我們就來看一下Nginx上配置Basic Authorization登錄認(rèn)服務(wù)證的教程2016-06-06