Apache/2.4.9 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段间使用空格分隔
二、Apache Require 指令

附:常见访问控制指令

Require all granted #允许所有来源访问
Require all denied #拒绝所有来源访问
Require expr expression #允许表达式为true时访问
Require ip 10 172.20 192.168.2 #允许 特定IP段访问,多个段之前用空格隔开。每个段使用开头几项表示
Require host splaybow.com #只允许来自域名splaybow.com的主机访问

参考:

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

http://www.splaybow.com/post/apache-forbidden-directory-require.html

 

原文:https://www.cnblogs.com/leoyu/p/apache24_use_require_for_access_control_by_ip_and_useragent.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值