HTTP基于IP的访问控制
通常我们可以使用防火墙来控制网络用户对HTTP服务的访问,包括允许访问以及拒绝访问。相对于复杂的firewall
命令,我们还可以直接利用HTTP服务的配置文件来控制网络用户的访问。
现在我们先看一段HTTPD配置文件的基本配置:
<virtualhost *:80>
servername www.a.com
documentroot "/app/website/a/"
<directory /app/website/a/>
require all granted
</directory>
</virtualhost>
这段配置使用一对<virtualhost>
定义了一个www.a.com
的虚拟主机,定义虚拟主机的文件目录为/app/website/a/
。在一对<directory>
我们定义了指定目录的相关信息,包括Require
语句。而在Httpd中就是利用Require
语句来实现用户基于IP的访问控制。在本例中,require all granted
表示授权所有网络的用户访问当前目录,也即Require
语句所在的Directory
。该配置的默认访问的文件如下:
[root@Centos7T ~]#cat /app/website/a/index.html
/app/website/a/index.html
在其他客户端上使用curl
命令的访问结果如下:
[root@Centos7 R1 ~]#curl www.a.com
/app/website/a/index.html
Require
语句的用法大致分为以下三种:
1,针对所有主机的访问控制
2,针对特定IP的访问控制
3,针对特定Hostname的访问控制
针对所有主机的访问控制
在<Directory>
中,无明确的Require
授权记录,则表示默认拒绝访问,但我们也可以指定针对所有主机的访问,包括:
允许所有主机访问:Require all granted
拒绝所有主机访问:Require all denied
现在将文章开始的配置文件中的Require all granted
改成Require all denied
并重启服务:
[root@Centos7T ~]#vim /etc/httpd/conf.d/test.conf
<virtualhost *:80>
servername www.a.com
documentroot "/app/website/a/"
<directory /app/website/a/>
require