Apache2.4使用require指令進行訪問控制--允許或限制IP訪問/通過User-Agent禁止不友好網絡爬蟲


   從Apache2.2升級到Apache2.4后,發現原來用來限制部分IP和垃圾網絡爬蟲的訪問控制規則不起作用,查詢后才發現,Apache2.4中開始使用mod_authz_host這個新的模塊來進行訪問控制和其他的授權檢查。原來在Apache2.2版本下用以實現網站訪問控制的Order,Allow,Deny指令需要替換為新的Require訪問控制指令。

    

    注意:使用require指令時,需要在指令外添加<RequireAll></RequireAll>標簽對,否則重啟Apache2.4加載規則時將出現錯誤:" negative Require directive has no effect in <RequireAny> directive "

 

下面直接給出一些實例對Require指令的使用進行說明:

 

例1:允許所有訪問請求

Apache2.4下的配置:

<Directory xxx/www/yoursite>
 
    <RequireAll> Require all granted </RequireAll>
 
</Directory> 

 

例2:拒絕所有訪問請求

Apache2.4下的配置:

<Directory xxx/www/yoursite>
 
    <RequireAll>
        Require all denied
    </RequireAll>
 
</Directory>

 

例3:只允許來自特定域名主機的訪問請求,其他請求將被拒絕

Apache2.4下的配置:

<Directory xxx/www/yoursite>
 
    <RequireAll>
        Require host google.com
    </RequireAll>
 
</Directory>

 

例4:只允許來自特定IP或IP段的訪問請求,其他請求將被拒絕

Apache2.4下的配置:

<Directory xxx/www/yoursite>
 
    <RequireAll>
        Require ip 192.120 192.168.100 192.168.1.1
    </RequireAll>
 
</Directory>

 

例5:允許所有訪問請求,但拒絕來自特定IP或IP段的訪問請求(阻止惡意IP或惡意爬蟲網段的訪問)

Apache2.4下的配置:

<Directory xxx/www/yoursite>
 
    <RequireAll>
        Require all granted
        Require not ip 192.168.1.1
        Require not ip 192.120 192.168.100
    </RequireAll>
 
</Directory>

 

例6:允許所有訪問請求,但拒絕某些User-Agent的訪問請求(通過User-Agent屏蔽垃圾網絡爬蟲)

使用mod_setenvif通過正則表達式匹配來訪請求的User-Agent,並設置內部環境變量BADBOT,最后拒絕BADBOT的訪問請求。

Apache2.4下的配置:

<Directory xxx/www/yoursite>
 
    SetEnvIfNoCase User-Agent ".*(FeedDemon|JikeSpider|AskTbFXTV|CrawlDaddy|Feedly|Swiftbot|ZmEu|oBot).*" BADBOT
    SetEnvIfNoCase User-Agent "brandwatch" BADBOT
    SetEnvIfNoCase User-Agent "rogerbot" BADBOT
    <RequireAll>
        Require all granted
        Require not env BADBOT
        Require not ip 192.168.100.1
    </RequireAll>
 
</Directory>

 

 

其它require訪問控制指令用法如下:
Require all granted #允許所有
Require all denied #拒絕所有
Require env env-var [env-var] ... #允許匹配環境變量中任意一個
Require method http-method [http-method] ... #允許特定的HTTP方法(GET/POST/HEAD/OPTIONS)
Require expr expression #允許,表達式為true
Require user userid [ userid ] ... #允許特定用戶
Require group group-name [group-name] ... #允許特定用戶組
Require valid-user # #允許,有效用戶
Require ip 192.100 192.168.100 192.168.100.5 #允許特定IP或IP段,多個IP或IP段間使用空格分隔

 

參考:
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM