在nginx中將特定用戶代理列入黑名單
要設定用戶代理阻擋列表,請打開你的網站的nginx設定文件,找到server定義部分。該檔案可能會放在不同的地方,這取決於你的nginx配置或linux版本(如,/etc/nginx/nginx.conf,/etc/nginx/sites-enabled/
複製程式碼 程式碼如下:
server {
listen 80 default_servermodoo# /usr/share/nginx/html;
....
}
在開啟該設定檔並找到server 部分後,新增下列if 宣告到該部分內的某個地方。
複製程式碼 程式碼如下:
server {
listen 80 default_servermodoo# /usr/share/nginx/html; # 大小寫敏感的配對
if ($http_user_agent ~ (antivirx|arian) {
複製程式碼程式碼如下:
if ($http_user_agent ~* (netcrawl|npbot|malicious)) {
return 403
如你所想,這些if 聲明使用正規表示式匹配了任意不良用戶字串,並向匹配的物件返回403 http狀態碼。$http_user_agent是http請求中的一個包含有用戶代理字串的變數。' ~'操作符針對用戶代理字串進行大小寫敏感匹配,而'~*'操作符則進行大小寫無關匹配。'|'操作符是邏輯或,因此,你可以在if 聲明中放入眾多的使用者代理關鍵字,然後將它們全部阻擋掉。
在修改設定檔後,你必須重新載入nginx以啟動阻擋:
$ sudo /path/to/nginx -s reload
你可以透過使用「--user -agent」選項的wget 測試使用者代理程式阻擋。
$ wget --user-agent "malicious bot" http://<nginx-ip-address>
管理nginx中的使用者代理程式黑名單
目前為止,我已經展示了在nginx中如何阻擋一些用戶代理的http請求。如果你有許多不同類型的網絡爬蟲機器人要阻擋,又該怎麼辦呢?由於用戶代理黑名單會增長得很大,所以將它們放在nginx的server部分不是個好點子。取而代之的是,你可以創建一個獨立的文件,在該文件中列出所有被阻擋的用戶代理。例如,讓我們創建/etc/nginx /useragent.rules,定義以下列的格式定義所有被阻擋的使用者代理程式的圖譜。$ sudo vi /etc/nginx/useragent.rules
~antivirx 1; 1; }
與先前的配置類似,'~*'將匹配以大小寫不敏感的方式匹配關鍵字,而'~'將使用大小寫敏感的正規表示式來匹配關鍵字。 「default 0」行所表達的意思是,任何其它檔案中未被列出的使用者代理將被允許。
接下來,打開你的網站的nginx配置文件,找到裡麵包含 http 的部分,然後添加以下行到 http 部分某個位置。
複製程式碼 程式碼如下:
http {
.....
include /etc/nginx/useragent.rules## include /etc/nginx/useragent.rules## include /etc/nginx/useragent.rules## ,該include 聲明必須出現在server 部分之前(這就是為什麼我們將它加入了http 部分)。
....
if ($badagent) { return 403;
$ sudo /path/to/nginx -s reload
以上是在Nginx中怎麼攔截特定用戶代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!