http配置文件说明--站点访问控制常见机制
8、站点访问控制常见机制 可基于两种机制指明对哪些资源进行何种访问控制 访问控制机制有两种:客户端来源地址,用户账号 文件系统路径: <Directory “/path">...</Directory> 目录 <File “/path/file”> ...</File> 文件 <FileMatch "PATTERN">...</FileMatch> 文件表达式 URL路径: <Location "">...</Location> <LocationMatch "">...</LocationMatch> 示例: <FilesMatch "\.(gif|jpe?g|png)$"> <Files “?at.*”> 通配符 <Location /status> <LocationMatch "/(extra|special)/data"> 参数说明:1.Options 2.AllowOverride 3.Require (1) Options:后跟1个或多个以空白字符分隔的选项列表 在选项前的+,- 表示增加或删除指定选项 常见选项: Indexes:指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户,默认不显示符号链接。 FollowSymLinks:允许访问符号链接文件所指向的源文件,(DocumentRoot里可能有软连接路径。) None:全部禁用 All: 全部允许 示例: <Directory /var/www/html/> Require all granted Options Indexes FollowSymLinks </Directory> (2) AllowOverride 与访问控制相关的哪些指令可以放在指定目录下的.htaccess(由AccessFileName指定)文件中,覆盖之前的配置指令 cat /var/www/html/.htaccess Options Indexes FollowSymLinks 在配置文件中对启用.htaccess设置授权。 1.只对<directory>语句有效 2.针对不同的文件夹设置不同的功能。 AllowOverride All #.htaccess中所有指令都有效 AllowOverride None #.htaccess 文件无效,服务器不会读取.htaccess文件 AllowOverride AuthConfig #.htaccess 文件中,除了AuthConfig 其它指令都无法生效 <Directory /var/www/html/> Require all granted #Options Indexes FollowSymLinks #这项已在.htaccess设置了。 AllowOverride All </Directory> <Files "*.conf"> Require all denied </Files> (3) 基于IP的访问控制: 无明确授权的目录,默认拒绝 允许所有主机访问:Require all granted 拒绝所有主机访问:Require all denied 控制特定的IP访问: Require ip IPADDR/mask:授权指定来源的IP访问 Require not ip IPADDR:拒绝特定的IP访问 控制特定的主机访问: Require host HOSTNAME:授权特定主机访问 Require not host HOSTNAME:拒绝 HOSTNAME: FQDN:特定主机 domin.tld:指定域名下的所有主机 #禁止访问配置文件 <Files "*.conf"> Require all denied </Files> #不能有失败,至少有一个成功匹配才成功,即失败优先 <directory /data/www/> <RequireAll> Require all granted Require not ip 172.16.1.1 拒绝特定IP </RequireAll> </directory> #多个语句有一个成功,则成功,即成功优先 <directory /data/www/> <RequireAny> Require all denied require ip 172.16.1.1 允许特定IP </RequireAny> </directory> 远程客户端和用户验证的控制(用户验证的控制有基于IP/用户的访问控制的两种) Satisfy ALL|Any ALL 客户机IP和用户验证都需要通过才可以 Any 客户机IP和用户验证,有一个满足即可 示例: Require valid-user <RequireAll> Require all granted Require not ip 172.16.1.1 </RequireAll> Satisfy Any