/ 中存储网

Apache服务器如何配置虚拟主机

2014-01-10 11:02:01 来源:itjs.cn

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 [email protected]

 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 [email protected]

 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 [email protected]

 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 [email protected]

 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 整个name
1 第一部分
2 第二部分
-1 最后一部分
-2 倒数第二部分
2+ 从第二部分开始到最后的所有部分
-2+ 倒数第二部分以及之前的各部分
1+和-1+ 等同于0

如果N或M大于部分的个数,则简单的用下划线来替换。

就是这些了。