7、基于主机的访问控制
语法:
- hostaccess: if (CONDITION) deny IP
- hostaccess: if (CONDITION) allow IP
if语句只支持单个CONDITION。
IP需要加引号,IP可以是一个或多个ip地址、all(所有IP地址)、 CIDR (如108.192.8.0/24),具体可以参考Apache配置,allow是白名单,deny是黑名单。
例子:
# 禁止127.0.0.1 访问private目录
- hostaccess: if (%{REQUEST_URI} ~ "/private/") deny "127.0.0.1"
# 只允许127.0.0.1 访问.conf结尾的文件
- hostaccess: if (%{REQUEST_URI} ~ ".conf$") allow "127.0.0.1"
# 禁止127.0.0.1 的所有访问(这个要慎用)
- hostaccess: deny "127.0.0.1"
# 对cron任务保护,防止被外部抓取,我们将cron任务放在cron目录下(sae中cron服务执行时,走的是内部网络)
- hostaccess: if (%{REQUEST_URI} ~ "/cron/") allow "10.0.0.0/8" 允许10打头的所有IP
# 对于屏蔽一组IP地址,可以写成子网掩码形式,或者将多个IP之间加以空格。子网掩码形式如下:
- hostaccess: if (%{REQUEST_URI} ~ "/cron/") deny "108.192.8.0/24" 屏蔽108.192.8打头的所有IP
# 允许108.134.13.24和108.122.122.13这两个IP
- hostaccess: allow "108.134.13.24 108.122.122.13"
8、HTTP基础认证
语法:
- passwdaccess: passwd "USERNAME:PASSWORD..."
- passwdaccess: if (CONDITION) passwd "USERNAME:PASSWORD..."
例子:
# 所有访问都要密码,允许用户writer用密码123zxc访问
- passwdaccess: passwd "write:123zxc"
# 访问secret目录需要密码,允许用户test用密码123qwe访问,用户coder用密码123asd访问
- passwdaccess: if (%{REQUEST_URI} ~ "/secret/") passwd "test:123qwe coder:123asd"
# 访问.text结尾的文件需要密码,允许用户writer用密码123zxc
- passwdaccess: if (%{REQUEST_URI} ~ ".text$") passwd "writer:123zxc"
# 用户的网站后台程序都放在admin目录下,需要对admin目录做密码保护
- passwdaccess: if (%{REQUEST_URI} ~ "/admin/") passwd "admin:admin123"
if语句中只支持单个CONDITION ,%{REQ:HEADER_NAME}, %{REQUEST_URI}可以出现在CONDITION中,只支持字符串和正则匹配。