首頁 > 運維 > Nginx > 主體

在Nginx中怎麼攔截特定用戶代理

WBOY
發布: 2023-05-13 10:25:05
轉載
1221 人瀏覽過

在nginx中將特定用戶代理列入黑名單

要設定用戶代理阻擋列表,請打開你的網站的nginx設定文件,找到server定義部分。該檔案可能會放在不同的地方,這取決於你的nginx配置或linux版本(如,/etc/nginx/nginx.conf,/​​etc/nginx/sites-enabled/,/usr /local/nginx/conf/nginx.conf,/​​etc/nginx/conf.d/)。

複製程式碼 程式碼如下:

    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
登入後複製
在Nginx中怎麼攔截特定用戶代理 ;

            ~*malicious           ~*malicious    

            ~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 部分)。

現在,打開nginx設定定義你的伺服器的部分,加入以下if 宣告:

複製程式碼 程式碼如下:

   server {

        ....

        if ($badagent) {

            return 403;
         

 $ sudo /path/to/nginx -s reload
登入後複製
登入後複製

現在,任何包含有/etc/nginx/useragent.rules中列出的關鍵字的使用者代理程式將被nginx自動禁止。

以上是在Nginx中怎麼攔截特定用戶代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!