apache虚拟主机配置

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

内容:

这里讲述一些Apache虚拟主机中比较容易发生的问题和解决的一些基本思路,给出一些比较典型的错误的示例理解。

一.设置虚拟主机会发生些什么问题?

基本上会最容易遇到两个问题:1.虚拟主机发生冲突。2.宿主机的丢失。(当然还会遇到其他很多的问题,但是这里我们先讨论这2个问题)

1.虚拟主机发生冲突:

无论是采用哪种形式的虚拟主机,都会发生虚拟主机冲突的问题,尤其是在Apache的虚拟主机系统变得庞大而复杂的时候尤其容易发生。但是请记住,无论什么采用什么形式的虚拟主机,甚至多种混用,如果造成虚拟主机冲突的话,根本原因就只有一个:“至少有一个原因,使得Apache不能区别一些虚拟主机”。之前一个一直强调的一个部分就是“Apache需要能够做到区分每个虚拟主机”。如果能够通过IP区分的话,那就通过IP区分;如果需要多个主机共享一个IP 的话,那么可以设定不同的端口让Apache去区分;如果需要多个虚拟主机使用一个IP并且端口也用同一个的话,那么也要通过不同的域名来让Apache做到对不同虚拟主机的区分。

一个最经常发生的错误,就是在多个IP地址上进行基于域名方式虚拟主机的配置当中,没有指定和规划好哪几个虚拟主机是归属于哪个IP地址下,造成Apache对一些虚拟主机不能区别。沿用第二章中的示例,以下给出一个典型错例。

[root@kcentos5 ~]# vi /etc/httpd/myconf/virthosts.conf

------------(注意:此为典型错误配置的示例)----------

NameVirtualHost 192.168.1.111:80

(VirtualHost后面没有指定自己归属的IP地址)

DocumentRoot /var/www/vhost1/

ServerName

(VirtualHost后面没有指定自己归属的IP地址)

DocumentRoot /var/www/vhost2/

ServerName

NameVirtualHost 192.168.1.222:80

(VirtualHost后面没有指定自己归属的IP地址)

DocumentRoot /var/www/vhost3/

ServerName

(VirtualHost后面没有指定自己归属的IP地址)

DocumentRoot /var/www/vhost4/

ServerName

-------------------------------------------------------

在这个虚拟主机的配置当中,通过2个NameVirtualHost配置项指出Apache将在192.168.1.111和192.168.1.222 这两个IP地址上分别做基于域名的虚拟主机。但是,在每个虚拟主机的配置当中,又没有在这个虚拟主机头配置当中指定自己所归属的IP地址,虽然在每个虚拟主机里是同过ServerName写明了自己应该受理的域名,但是对于Apache来说,即使得到了客户端对哪个域名的请求,但是它也不知道如何进一步给自己的哪个网络接口的IP地址上的虚拟主机去受理。那么这个时候Apache遇到这样的问题会怎么做呢?

我们就先按以上的错误配置来启动httpd服务看看响应。

[root@kcentos5 ~]# service httpd restart

-------------------------------------------------------

Stopping httpd: [ OK ] Starting httpd: [Sun Sep 23 19:53:38 2007] [warn] _default_ VirtualHost overlap on port 80, the first has precedence

告警:默认的虚拟主机在监听的80端口上有重叠,因此第一个虚拟主机将获得优先。

[Sun Sep 23 19:53:38 2007] [warn] _default_ VirtualHost overlap on port 80, the first has precedence

[Sun Sep 23 19:53:38 2007] [warn] _default_ VirtualHost overlap on port 80, the first has precedence

[Sun Sep 23 19:53:38 2007] [warn] NameVirtualHost 192.168.1.111:80 has no

VirtualHosts

告警:网络接口192.168.1.111上不认为有虚拟主机的存在。

[Sun Sep 23 19:53:38 2007] [warn] NameVirtualHost 192.168.1.222:80 has no VirtualHosts

告警:网络接口192.168.1.222上不认为有虚拟主机的存在。

[ OK ]

-------------------------------------------------------

再通过httpd -S命令来更加明确发生的问题,以及发生该问题后Apache所将采取的措施。

[root@kcentos5 ~]# httpd -S

-------------------------------------------------------

[Sun Sep 23 20:22:43 2007] [warn] _default_ VirtualHost overlap on port 80, the first has precedence

[Sun Sep 23 20:22:43 2007] [warn] _default_ VirtualHost overlap on port 80, the first has precedence

[Sun Sep 23 20:22:43 2007] [warn] _default_ VirtualHost overlap on port 80, the first has precedence

告警:默认的虚拟主机在监听的80端口上有重叠,因此第一个虚拟主机将获得优先。

[Sun Sep 23 20:22:43 2007] [warn] NameVirtualHost 192.168.1.111:80 has no VirtualHosts

告警:网络接口192.168.1.111上不认为有虚拟主机的存在。

[Sun Sep 23 20:22:43 2007] [warn] NameVirtualHost 192.168.1.222:80 has no VirtualHosts

告警:网络接口192.168.1.222上不认为有虚拟主机的存在。

VirtualHost configuration:

wildcard NameVirtualHosts and _default_ servers:

*:80 (/etc/httpd/myconf/virthosts.conf:16)

*:80 (/etc/httpd/myconf/virthosts.conf:21)

*:80 (/etc/httpd/myconf/virthosts.conf:28)

相关文档
最新文档