Apache 可以基于源主机名、源 IP 地址或源主机上的浏览器特征等信息对网站上的资源进行访问控制。它通过 Allow 指令允许某个主机访问服务器上的网站资源,通过 Deny 指令实现禁止访问。在允许或禁止访问网站资源时,还会用到 Order 指令,这个指令用来定义 Allow或 Deny 指令起作用的顺序,其匹配原则是按照顺序进行匹配,若匹配成功则执行后面的默认指令。比如“ Order Allow, Deny”表示先将源主机与允许规则进行匹配,若匹配成功则允许访问请求,反之则拒绝访问请求。
先做一个测试网页:
mkdir /var/www/html/server
echo "Successful" > /var/www/html/server/index.html
修改配置文件:这段规则的含义是允许使用 Firefox 浏览器的主机访问服务器上的首页文件,除此之外的所有请求都将被拒绝。
vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/server">
SetEnvIf User-Agent "Firefox" ff=1
Order allow,deny
Allow from env=ff
</Directory>
systemctl restart httpd
除了匹配源主机的浏览器特征之外,还可以通过匹配源主机的 IP 地址进行访问控制。例
如,我们只允许 IP 地址为 192.168.10.20 的主机访问网站资源,那么就可以在 httpd 服务配置
文件的第 129 行后面添加下述规则。这样在重启 httpd 服务程序后再用本机(即服务器,其 IP
地址为 192.168.10.10)来访问网站的首页面时就会提示访问被拒绝了
vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/server">
Order allow,deny
Allow from 192.168.10.20
Order allow,deny
Allow from env=ie
</Directory>