一.基于域名的虚拟主机是根据客户端提交的HTTP头中标识主机名的部分决定的。使用这种技术,很多虚拟主机可以共享同一个IP地址。基于域名的虚拟主机相对比较简单,因为你只需要配置你的DNS服务器将每个主机名映射到正确的IP地址,然后配置Apache HTTP服务器,令其辨识不同的主机名就可以了。基于域名的服务器也可以缓解IP地址不足的问题。
比如说,假设你正在为域名提供服务,而你又想在同一个IP地址上增加一个名叫的虚拟主机,你只需在httpd.conf中加入以下内容:
NameVirtualHost *:80
ServerName
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
ServerName
DocumentRoot /www/otherdomain
当然,你可以用一个固定的IP地址来代替NameVirtualHost和
指令中的"*"号,以达到一些特定的目的。比如说,你可能会希望在一个IP地址上运行一个基于域名的虚拟主机,而在另外一个IP地址上运行一个基于IP的或是另外一套基于域名的虚拟主机。
很多服务器希望自己能通过不只一个域名被访问。我们可以把ServerAlias指令放入小节中来解决这个问题。比如说在上面的第一个配置段中ServerAlias指令中列出的名字就是用户可以用来访问同一个web站点的其它名字:
ServerAlias domain.tld *.domain.tld
这样,所有对域domain.tld的访问请求都将由虚拟主机处理。通配符标记"*"和"?"可以用于域名的匹配。当然你不能仅仅搞个名字然后把它放到ServerName或ServerAlias里就算完了。你必须先在你的DNS服务器上进行配置,将这些名字和您服务器上的一个IP地址建立映射关系。
最后,你可以把其他一些指令放入段中,以更好的配置一个虚拟主机。大部分指令都可以放入这些段中以改变相应虚拟主机配置。如果您想了解一个特定的指令是否可以这样运用,请参见指令的作用域。主服务器(main server)范围内的配置指令(在所有配置段之外的指令)仅在它们没有被虚拟主机的配置覆盖时才起作用。
这样,当一个请求到达的时候,服务器会首先检查它是否使用了一个能和NameVirtualHost相匹配的IP地址。如果能够匹配,它就会查找每个与这个IP地址相对应的段,并尝试找出一个与请求的主机名相同的ServerName或ServerAlias配置项。如果找到了,它就会使用这个服务器。否则,将使用符合这个IP地址的第一个列出的虚拟主机。
综上所述,第一个列出的虚拟主机充当了默认虚拟主机的角色。当一个IP地址与NameVirtualHost指令中的配置相符的时候,主服务器中的DocumentRoot将永远不会被用到。所以,如果你想创建一段特殊的配置用于处理不对应任何一个虚拟主机的请求的话,你只要简单的把这段配置放到段中,并把它放到配置文件的最前面就可以了。
二,基于端口的虚拟主机
listen 800
listen 8080
;
documentroot /www/v-host1
;
;
documentroot /www/v-host2
;
保存推出
mkdir -p /www/v-host1
mkdir -p /www/v-host2
echo "test 1">; /www/v-host1/index.html
echo "test 2">; /www/v-host2/index.html
apachectl restart
在浏览其中输入192.168.1.200:800
NameVirtualHost 222.73.*.*:8080
ServerAdmin abc@abc.com
DocumentRoot C:/AppServ/www/abc
ServerName
ErrorLog logs/xoops.54sy.com-error_log
CustomLog logs/xoops.54sy.com-access_log common
ServerAdmin abc@abc.com
DocumentRoot C:/AppServ/www/abcdef
ServerName
ErrorLog logs/xoops.54sy.com-error_log
CustomLog logs/xoops.54sy.com-access_log common
Apache配置虚拟主机出现“错误403,你无权查看该页”的问题
配置多个域名绑在同一个IP上的虚拟主机时,会出现403错误,“禁止访问, 您无权查看该网页”,您可能没有权限用您提供的凭据查看此目录或网页。
自己的配置、权限都没有问题,查了一下网上资料,原来是apache2的默认安全机制的问题,这样处理:
在httpd.conf中找到:
Options FollowSymLinks
AllowOverride None
Order allow,deny
deny from all
改为:
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
或:
Options FollowSymLinks ExecCGI Indexes
AllowOverride None
Order deny,allow
deny from all
Satisfy all
为
Options FollowSymLinks ExecCGI Indexes
AllowOverride None
Order allow,deny
allow from all
Satisfy all
阅读(2431) | 评论(0) | 转发(0) |