刘伟 发表于 2017-12-24 10:25:48

Apache的访问控制

  
  目录配置段
  注释不能写在指令后面,下面这样是不行的,应当换行,但为了阅读方便我就这么写了
  Alias /dir/"/var/www/html/admin"      #路径的别名 这样就可以在域名后面加 /dir 而实际访问的是 admin下面的文件
  <Directory /var/www/html/>
  Order Allow,Deny                              #权限的顺序是先允许 后拒绝
  Deny from 192.168.1.12                  #拒绝192.168.1.12访问
  Allow from all                                     #允许所有的访问
  Options Indexes FollowSymLink   #允许目录索引 符号链接
  AllowOverride None                        #不能被目录下的.htaccess覆盖
  # AllowOverride all                            允许被目录下的.htaccess规则覆盖 默认是允许的
  </Directory>
  文件配置段
  <Files "hello.html">
  Order Deny,Allow   #先拒绝 后允许
  Deny from all            #拒绝所有的访问所有目录下的hello.html文件
  </Files>
  如果文件配置段嵌套到目录配置段,就只控制那个目录下文件的访问权限
  url配置段
  <Location /admin>
  Deny from all      #拒绝所有的访问/admin这个url
  </Location>
  文件目录url都可用通配符或正则
  <Directory "/var/*/html/">
  ......
  </Directory>
  <FilesMatch \.(gif|png)>
  Deny from all#拒绝访问图片
  </FilesMatch>
  Apache的虚拟主机配置
  基于ip:
  <VirtualHost 192.168.142.2:80>
  ServerAdmin zhaoyp1985@163.com
  DocumentRoot "/var/www/web1"
  ServerName www.aaa.com
  ErrorLog "/home/log/error/error.log"
  CustomLog "/home/log/coustom/error.log"
  </VirtualHost>
  <VirtualHost 192.168.142.1:80>
  ServerAdmin zhaoyp1985@163.com
  DocumentRoot "/var/www/web1"
  ServerName www.bbb.com
  ErrorLog "/home/log/error/error.log"
  CustomLog "/home/log/coustom/error.log"
  </VirtualHost>
  基于域名:
  NameVirtualHost *:80
  #保留原来的localhost
  <VirtualHost *:80 >
  ServerName *
  DocumentRoot "/var/www/html"
  </VirtualHost>
  #虚拟主机www.aaa.com
  <VirtualHost *:80 >
  ServerAdmin zhaoyp1985@163.com
  DocumentRoot "/var/www/web1"
  ServerName www.aaa.com
  ErrorLog "/home/log/error/error.log"
  CustomLog "/home/log/coustom/error.log"
  </VirtualHost>
  #虚拟主机www.bbb.com
  <VirtualHost *:80 >
  ServerAdmin zhaoyp1985@163.com
  DocumentRoot "/var/www/web2"
  ServerName www.bbb.com
  ErrorLog "/home/log/error/error.log"
  CustomLog "/home/log/coustom/error.log"
  </VirtualHost>
  泛域名的解析
  <VirtualHost *:80>
  ServerName *.aaa.com
  VirtualDocumentRoot/var/www/cct/home/%1
  <Directory " /var/www/cct/home/" >
  AllowOverride All
  Order Allow,Deny
  Allow from all
  </Directory>
  </VirtualHost>
  
  其中的%1是*.aaa.com的第一部分 见下面:
目录名称的转换
  本模块中的所有指令都用于将字符串替换为路径名。被替换的字符串(以后称为"name")可以是服务器名(参见UseCanonicalName指令以了解决策方法)或者是"点数字"格式的虚拟主机IP地址。替换操作由printf格式修饰符控制,该修饰符有以下几种格式:
%%插入一个百分号(%)%p插入虚拟主机的端口号%N.M插入名称(或者名称的一部分)  N和M被用来指定name中的子字符串。N从name中用小数点分隔的某部分中选取,而M是从N选中的字符串中选取部分字符。M是可选的且默认为"0";小数点当且仅当M存在时才必须书写。替换操作如下:
0整个name1第一部分2第二部分-1最后一部分-2倒数第二部分2+从第二部分开始到最后的所有部分-2+倒数第二部分以及之前的各部分1+和-1+等同于0  如果N或M大于部分的个数,则简单的用下划线来替换。
页: [1]
查看完整版本: Apache的访问控制