85 FreeBSD连载:配置Apache服务器(2)( 八 )


有两种设定虚拟主机的方式,一种是基于HTTP 1.0标准,需要一个具备多IP地址的服务器,再配置DNS服务器,给每个IP地址以不同的域名,最后才能配置Apache的配置文件,使服务器对不同域名返回不同的Web文档 。由于这需要使用额外的IP地址,对每个要提供服务的域名都要使用单独的IP地址,因此这种方式实现起来问题较多 。
可以在一个网络界面上绑定多个IP地址,FreeBSD下需要使用ifconfig的alias参数来进行这个配置,但此时会影响网络性能 。
HTTP 1.1标准在协议中规定了对浏览器和服务器通信时,服务器能够跟踪浏览器请求的是哪个主机名字 。因此可以利用这个新特性,使用更轻松的方式设定虚拟主机 。这种方式不需要额外的IP地址,但需要新版本的浏览器支持 。这种方式已经成为建立虚拟主机的标准方式 。
要建立非IP基础的虚拟主机,多个域名是不可少的配置,因为每个域名就对应一个要服务的虚拟主机 。因此需要更改DNS服务器的配置,为服务器增加多个CNAME选项,如:
freebsdINA192.168.1.64vhost1INCNAMEfreebsdvhost2INCNAMEfreebsd基本的设置选项都是为了freebsd主机设定的,如果要为vhost1和vhost2设定虚拟主机,就要使用VirtualHost语句定义不同的选项,在语句中可以使用配置文件前面中的大部分选项,而可以重新定义几乎所有的针对服务器的设置 。
NameVirtualHost 192.168.1.64DocumentRoot /usr/local/www/dataServerNamefreebsd.example.org.cnDocumentRoot /vhost1ServerNamevhost1.example.org.cnDocumentRoot /vhost2ServerNamevhost2.example.org.cn这里需要注意的是,VirtualHost的参数地址一定要和NameVirtualHost定义的地址相一致,必须保证所有的值严格一致,Apache服务器才承认这些定义是为这个IP地址定义的虚拟主机 。
此外,定义过NameVirtualHost之后,那么对这个IP地址的访问都被区分不同的虚拟主机进行处理,而对其他IP地址的访问,例如127.0.0.1,才应用前面定义的缺省选项 。
未完,待续 。。。

推荐阅读