网站首页 > 基础教程 正文
对于WWW服务来说,在WWW服务器和WWW浏览器之间并不始终维持对话过程。只要WWW服务器完成对一个URL请求的服务,连接就断开了。在这种情况下,在WWW上保证可以使用的唯一认证机制是由HTTP本身提供的。在标准的Apache服务器实现了这样的认证,它能控制哪些主机可能访问特定的站点或特点的站点的一部分。
这种认证可以分为两种,一种是基于主机的的认证,另一种是基于用户名/口令的认证。由于互联网上的决大多数用户的IP地址是动态获得的,所以基于主机的认证方式并不总适用。所以在大多数情况下,传统的基于用户名/口令的认证方式更为现实。
1.Apache提供对目录级别和文件级别基于主机的访问控制
基于主机的认证方式
在种认证模式顾名思义,访问是用主机名或主机IP地址来控制的。支持这种认证方式的是Apache的mod_access模块,这个模块缺省状态下是被安装了的。该模块用以下几种Apache命令来提供访问控制功能。
⑴ allow命令
语法:allow from host1 host2 host3 ...
这个命令定义了允许访问站点或目录的主机清单。
主机清单可以用以下几种形式表示:
① ALL:代表所有主机;
② 主机的全域名,如:www.mot.com;
③ 主机的部分域名,如:.mot.com;
④ 完整的IP地址,如:202.98.2.32;
⑤ 部分IP地址,如:202.98
⑥ 网络地址/网络掩码,如:202.98.0.0/255.255.0.0
⑦ 网络地址/nn(CIDR定义),如:202.98.0.1/16
⑵ deny命令
语法:deny from host1 host2 host3 ...
这个命令定义了禁止访问站点或目录的主机清单,其他与allow命令相似。
⑶ order命令
语法:order deny,allow | allow,deny
这个命令定义评价allow和deny命令的先后顺序。
例如:
<Directory /home/httpd/html>
order deny,allow
deny from http://www.mot.com/
allow all
</Directory>
这组命令设置了禁止www.mot.com访问/home/httpd/html目录下的文件。
请大家注意,顺序是先deny后allow,如果是:order allow,deny 那么,先允许所有的主机访问,然后再禁止,这样是无效的,所有主机仍然能够访问。
可将基于主机的访问限制应用于目录和文件。通过以下指令的使用实现访问控制,即allow、deny和order语句任一单独的或组合。以下举例,只要那些主机来自example.com域,便许可访问到/var/www/html/internal
<Directory /var/www/html/internal>
order allow deny
allow from example.com
</Directory>
2.主机规格可以包括“·”点符号数字、网络/掩码,和“·”点符号主机名与域
deny和allow指令后的访问列表形式
All :表示所有客户
域名 :表示域内的所有客户,如redhat.com
IP地址 :可以指定完整的IP地址或部分IP地址。
网络/子网掩码:如192.168.0.1/255.255.255.0
CIDR规范:如192.168.0.1/24
3.Order语句提供 在“order”之上的控制,但不总是一种期望的办法
4. 访问控制的配置指令:
order: 用于指定执行允许访问规则和执行拒绝访问规则的先后顺序。
allow: 定义允许访问列表。
deny:定义拒绝访问列表。
这些参数用于建议控制Apache 的访问列表。此主机不包括在访问控制列表中或当主机被包括在指定的一个矛盾值的方法中时,它将为主机更准确的去理解这些作为默认行为的语句。如果一个主机被包括在一个deny或allow列表中,但不是两个都在其中,那么Apache将应用此访问控制。如果一个主机不在deny或allow列表中,那么此主机将被通过默认的机制给order策略而处理。如果一个主机包括在两个allow和deny列表中都包括,那么它通过默认机制处理。
5. order指令的几种形式:
order allow,deny :在执行拒绝访问规则之前先执行允许访问规则,默认情况下将会拒绝所有没有明确被允许的客户。即“允许被明确允许的客户端,拒绝其他的每个客户端。通过allow和deny的允许来匹配客户端。”
order deny,allow :在执行允许访问规则之前先执行拒绝访问规则,默认情况下将会允许所有没有明确拒绝的客户。即“拒绝明确拒绝的客户端,允许其他的每个客户端,通过allow和deny的拒绝来匹配客户端。”
6. 举例:
编辑/etc/httpd/conf/httpd.conf配置文件,查找到以下行,并去掉每行前的“#”号。
<Location /server-info>
SetHandler server-info (由mod_info模块生成服务器配置信息)
Order deny,allow (先执行deny规则再执行allow规则)
Deny from all (拒绝所有的客户,只允许来自192.168.0.5的访问)
Allow from 192.168.0.5
#</Location>
更多信息查看:http://httpd.apache.org/docs-2.0/mod/mod_access.html
猜你喜欢
- 2024-10-16 web前端移动端最流行的网页布局技术:flexbox弹性布局学习详解
- 2024-10-16 美团团购订单系统优化记 美团团购订单系统优化记录怎么删
- 2024-10-16 快速学会html表单提交(php) html提交表单到php
- 2024-10-16 Django开发教程(七) django开发工具
- 2024-10-16 前端配置prettier,eslint ,stylelint
- 2024-10-16 电脑绝技教你22天学精Csharp之第十八天HTML和CSS补充3
- 2024-10-16 HTML部分第四章——HTML常用标签 html标签大全及用法图解
- 2024-10-16 基于Django+mysql的点餐系统设计-第八篇(H5主页调试-静态页面)
- 2024-10-16 什么是 Promise.all 什么是suv汽车
- 2024-10-16 你知道css3的focus-within选择器吗?
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)