Apache2.4使用require指令进行访问控制--允许或限制IP访问/通过User-Agent禁止不友好网络爬虫
2016-03-17 21:48
1011 查看
从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下的配置:
例2:拒绝所有访问请求
Apache2.4下的配置:
例3:只允许来自特定域名主机的访问请求,其他请求将被拒绝
Apache2.4下的配置:
例4:只允许来自特定IP或IP段的访问请求,其他请求将被拒绝
Apache2.4下的配置:
例5:允许所有访问请求,但拒绝来自特定IP或IP段的访问请求(阻止恶意IP或恶意爬虫网段的访问)
Apache2.4下的配置:
例6:允许所有访问请求,但拒绝某些User-Agent的访问请求(通过User-Agent屏蔽垃圾网络爬虫)
使用mod_setenvif通过正则表达式匹配来访请求的User-Agent,并设置内部环境变量BADBOT,最后拒绝BADBOT的访问请求。
Apache2.4下的配置:
其它require访问控制指令用法如下:
参考:
https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require
http://httpd.apache.org/docs/2.4/upgrading.html
http://www.jb51.net/article/64280.htm
注意:使用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段间使用空格分隔
参考:
https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require
http://httpd.apache.org/docs/2.4/upgrading.html
http://www.jb51.net/article/64280.htm
相关文章推荐
- golang入门--一个简单的http client
- 笔试题:计算机网络 (1)
- 深入理解HTTP协议
- 卷积神经网络入门学
- 网络请求
- IOS 网络浅析-(三 NSURLConnection代理)
- 如何用AWS(亚马逊云服务器)搭建一个自己的blog (3) – 如何登陆到AWS建立的网络服务器
- select/poll使用简单分析
- Understanding LSTM Networks
- 手写服务器httpserver_准备_http协议_http工具JAVA197-198
- Http的会话跟踪和跨站攻击(xss)
- Http的会话跟踪和跨站攻击(xss)
- Http的会话跟踪和跨站攻击(xss)
- Http的定义及其基本概念介绍
- Http的定义及其基本概念介绍
- Http的定义及其基本概念介绍
- git 如何删除本地创建的仓库(转载自 https://segmentfault.com/q/1010000002996177?_ea=262685)
- 【web必知必会】——图解HTTP
- 机器视觉系列—— Vision 基础知识上集 http://bbs.elecfans.com/jishu_466819_1_1.html (出处: 中国电子技术论坛)
- 网络基础