Apache虚拟主机配置

需求:

  在同一台服务器上架设多个web站点,每个站点拥有独立的域名,但共用相同ip

 

实现:

  根据需求分析,则通过apache的基于主机名的虚拟主机(一个IP地址,多个网站)方式实现。

  术语"虚拟主机"是指在一个机器上运行多个网站(比如:www.company1.comwww.company2.com)。如果每个网站拥有不同的IP地址,则虚拟主机可以是"基于IP"的;如果只有一个IP地址,也可以是"基于主机名"的,其实现对最终用户是透明的。

  

 

  step 1 :指定服务器IP地址(和可能的端口)来使主机接受请求
  NameVirtualHost指令配置
  如果服务器上所有的IP地址都会用到,你可以用"*"作为NameVirtualHost的参数

  step 2 :每个虚拟主机建立<VirtualHost>段
  <VirtualHost>的参数与NameVirtualHost的参数必须是一样的
  <VirtualHost>中至少包含ServerName和DocumentRoot
  ServerName指令来指定伺服哪个主机 
  DocumentRoot指令来说明这个主机的内容位于文件系统的什么地方  

   step 3 :取消中心主机(Mainhost)
   如果你想在现有的web服务器上增加虚拟主机,你必须也为现存的主机建造一个<VirtualHost>定义块;
   这个虚拟主机中ServerName和DocumentRoot所包含的内容应该与全局的ServerName和DocumentRoot保持一致;
   还要把这个虚拟主机放在配置文件的最前面,来让它扮演默认主机的角色。 

  例:

NameVirtualHost *:80

#默认主机,如果直接使用ip或者www.domain.tld都能访问
<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>

#使用www.otherdomain.tld能访问
<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>

 

相关问题:

  1、开始配置时,自己胡乱的copy,出现了各种问题,然后就是有一阵的胡乱copy,最终还是不能解决。

  解决:静下心来,看看比较官方全面的文档,比如Apache HTTP Server Version 2.2 文档,很多东西就引刃而解了

  2、apache重启遇到Could not reliably determine the server's fully qualified domain name

  解决:在/etc/httpd/conf/httpd.conf中修改ServerName localhost:80(其他你自己的域名也行)

  3、所有的请求相应都的是配置中的第一个与虚拟主机的(www.domain.tld或www.otherdomain.tld都给解析的是/www/domain下的站点)

  解决:原来是没有设置NameVirtualHost 造成的,一定别忘了了设置NameVirtualHost

  4、访问虚拟主机配置的第二个域名www.otherdomain.tld时老是去跳转到apache的默认页去

  开始以为是虚拟主机的配置原因,查了很久没能查出具体原因,后面用firebu查看了网络请求,看到了一个403

  

   解决:原来是centos中apache将403给我转到了一个它的一个默认页面,还以为是我的配置问题呢,然后给以授权,问题解决

 

参考:

  [1]  Apache虚拟主机文档

  [2]  基于主机名的虚拟主机

posted @ 2012-04-25 10:26  长城的草  阅读(377)  评论(0编辑  收藏  举报