Apache2.4使用require指令进行访问控制

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

原文地址:https://www.cnblogs.com/llxpbbs/p/9157203.html

时间: 2024-08-26 07:31:00

Apache2.4使用require指令进行访问控制的相关文章

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.

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 上文

在apache2.4版本之前做客户端访问控制,是用Allow Deny Order指令做访问控制的,

在apache2.4版本之前做客户端访问控制,是用Allow Deny Order指令做访问控制的,而在2.4的版本上是用的用法跟之前的版本大不相同,如下 ################################################ 2.2上的配置 Order deny,allow Deny from all 2.4上的配置 Require all denied ################################################ 2.2上的配置

Linux运维实战之Apache的基本配置(全局配置、主服务器配置):

上次博文我们具体讨论了http协议(参见:http://sweetpotato.blog.51cto.com/533893/1656137),本次博文我们来具体配置一台Apache(httpd)服务器. 本次博文的主要内容: httpd相关包信息 httpd的安装及主页面 httpd的配置文件 httpd的全局配置 httpd的主服务器配置 一.httpd的RPM包介绍及其相关信息: RHEL5和RHEL6略有不同: 下图是RHEL5上httpd相关包的信息: 下图是RHEL6上httpd相关包

web服务之httpd2.2及2.4配置详解02

本文继续浅谈httpd2.2相关配置,httpd-2.4的变化及相关配置,LAMP相关知识 http2.2 相关配置 1. httpd status页面的展示 查看status_module模块是否装载 [[email protected] tmp]# httpd -M|grep status  status_module (shared) Syntax OK 全局配置文件打开如下配置即可,也可以在virtualhost中配置 <Location /server-status>     Set

Apache2.4和Apache2.2访问控制配置语法对比

一.访问控制 在Apache2.2版本中,访问控制是基于客户端的主机名.IP地址以及客户端请求中的其他特征,使用Order(排序), Allow(允许), Deny(拒绝),Satisfy(满足)指令来实现. 在Apache2.4版本中,使用mod_authz_host这个新的模块,来实现访问控制,其他授权检查也以同样的方式来完成.旧的访问控制语句应当被新的授权认证机制所取代,即便Apache已经提供了mod_access_compat这一新模块来兼容旧语句. 这里有一些实例,用新方法取代旧语句

Windows10下Apache2.4配置Django

开发环境 Windows 10 x64 Apache 2.4 x64 Python 2.7.11 x64 Django 1.9.6+ 下载和安装mod_wsgi 到 http://download.csdn.net/download/copter/9192361 下载mod_wsgi.so 由于没有Python3.5的mod_wsgi.so,所以就用了Python2.7的. 选择对应的mod_wsgi.so,拷贝到Apache24\modules下. 修改apache2.4的http.conf文

Apache2.2和Apache2.4中httpd.conf配置文件 权限的异同

Windows环境从Apache2.2改成Apache2.4后httpd.conf中的设置异同. 1.权限设定方式变更 2.2使用Order Deny / Allow的方式,2.4改用Require apache2.2: Order deny,allow Deny from all apache2.4: Require all denied 此处比较常用的有如下几种: Require all denied Require all granted Require host xxx.com Requ

2-Apache服务的访问控制

目录 2-Apache服务的访问控制 1.开启基本认证(用户密码) 2.网络访问控制 2-Apache服务的访问控制 1.开启基本认证(用户密码) 查看Apache文档-->认证 AuthType Basic AuthName "Restricted Files" #(下面这一行是可选的) AuthBasicProvider file AuthUserFile /usr/local/apache2/passwd/passwords Require user rbowen 需求1: