Apache2.4使用require指令进行访问控制--允许或限制IP访问/通过User-Agent禁止不友好网络爬虫

从Apache2.2.X到Apache2.4.X,在配置上稍微有点不同,需要特别注意。现在记录下关于访问控制的配置。

经过苦苦搜索,终于配置成功。参考了这篇文章:http://www.cnblogs.com/leoyu/p/apache24_use_require_for_access_control_by_ip_and_useragent.html

关于Location配置的灵感,是从这篇文章看到的:http://www.bubuko.com/infodetail-336400.html

上文虽然有点乱,但是有个片段提醒到我:

#禁止所有非法域名
<VirtualHost *:80>
    ServerName 服务器ip
    ServerAlias *
    <Location />
        Order Allow,Deny
        Deny from all
    </Location>
</VirtualHost>
211.147.235.10这个IP太讨厌了,使用"WhatsUp_Gold/7.0"来扫我的网站。所以决定屏蔽掉。

在需要进行访问控制的地方,比如VirtualHost或者Directory,加入Location元素

    <Location / > 
        SetEnvIfNoCase User-Agent ".*(FeedDemon|JikeSpider|AskTbFXTV|CrawlDaddy|Feedly|Swiftbot|ZmEu|oBot|WhatsUp).*" BADBOT    
        SetEnvIfNoCase User-Agent "brandwatch" BADBOT
        SetEnvIfNoCase User-Agent "rogerbot" BADBOT
        <RequireAll>
         Require all  granted
         Require not env BADBOT
         Require not ip 211.147.235.10
        </RequireAll>
    </Location>

其它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段间使用空格分隔

 

文章来自:http://www.cnblogs.com/luodengxiong/p/5469472.html
© 2021 jiaocheng.bubufx.com  联系我们
ICP备案:鲁ICP备09046678号-3