Linux虚拟主机配置

一、概述
虚拟主机(Virtual Host),又称虚拟服务器、主机空间或是网页空间,是一种网络技术,可以让多个主机名称,在一个单一的服务器上运作,而且可以分开支持每个单一的主机名称。虚拟主机可以运行多个网站或服务。虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。其技术是互联网服务器采用的节省服务器硬件成本的技术,虚拟主机技术主要应用于HTTP、FTP、EMAIL等多项服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务段位,对外表现为多个服务器,从而充分利用服务器硬件资源。——Wiki中对虚拟主机的解释。

虚拟主机的实现方式主要有三种:基于域名的方法(Name-based)、基于IP的方法(IP-based)以及基于端口的方法(Port-based)。下面将结合apache的配置来讲解虚拟主机的各种配置及应用场景。

注:实验环境为CentOS release 6.3(Final)

二、实战演练
1. http配置文件讲解
httpd的默认配置文件为:/etc/httpd/conf/httpd.conf,它主要包含三大部分,如下:

[root@Slaver conf]# grep '\<Section\>' /etc/httpd/conf/httpd.conf -n
33:### Section 1: Global Environment
245:### Section 2: 'Main' server configuration
977:### Section 3: Virtual Hosts
[root@Slaver conf]#


其中:1)Global Environment——全局配置,决定Apache服务器的全局参数。


      2)Main server configuration——主服务配置,相当于是Apache的默认web站点,如果我们的服务器中只有一个站点,那么就只需要在这里配置就可以了。


  3)Virtual Hosts——虚拟主机,虚拟主机不能与Main Server主服务器共存,当启用了虚拟主机之后,Main Server就不能使用了。


与虚拟主机相关的配置项有:a)Listen:80指定apache的监听端口,在全局配置区中设置;b)NameVirtualHost:*:80在虚拟主机区域中设置。


2. 基于域名的多站点配置

适用场景:在一台主机上配置两个站点,其域名分别为:、,对应的站点文件存放位置为:/var/www/html/test01和/var/www/html/test02。


满足此应用的相关配置:


a. 修改/etc/httpd/conf/httpd.conf中的配置


i.端口监听开启:Listen 80


ii.虚拟主机配置开启:NameVirtualHost *:80(将前面的注释#去掉)


b. 在/etc/httpd/conf.d/中添加站点的配置文件


注意:在/etc/httpd/conf.d目录下新建站点配置文件,必须确保Include conf.d/*.conf开启。新建配置文件内容如下:


[root@Slaver conf.d]# cat
<VirtualHost *:80>
  DocumentRoot /var/www/html/test01
  ServerName
  <Directory /var/www/html/test01>
      Options Indexes FollowSymLinks
      AllowOverride All
      Order Allow,Deny
      Allow from all
  </Directory>
</VirtualHost>
[root@Slaver conf.d]#

[root@Slaver conf.d]# cat
<VirtualHost *:80>
  DocumentRoot /var/www/html/test02
  ServerName
  <Directory /var/www/html/test02>
      Options Indexes FollowSymLinks
      AllowOverride All
      Order Allow,Deny
      Allow from all
  </Directory>
</VirtualHost>
[root@Slaver conf.d]#


重启httpd:service httpd restart,然后再浏览器中分别访问域名即可。注意:该域名访问的机器必须能够解析到,如果不是公网的域名的话可以通过配置本机的hosts来解析。


c. 上述配置项分析


i.VirtualHost *:80


指定虚拟主机的IP以及端口,其中*:80表示响应来自本机所有网卡的80端口的请求。当然,这里也可以指定特定的IP,例如:VirtualHost 192.168.17.131:80,则它会响应来自192.168.17.131IP的访问请求,与此同时在/etc/httpd/conf/httpd.conf中的NameVirtualHost也必须指定为192.168.17.131或*,不然的话在启动httpd的时候会报出如下的错误:Starting httpd: [Wed Feb 04 22:30:23 2015] [warn] NameVirtualHost 192.168.17.131:80 has no VirtualHosts。


用简单的话来说,NameVirtualHost设定的与具体配置文件中VirtualHost设定的必须为一一对应,或者为*对一(NameVirtualHost为*,其他VirtualHost为具体的IP)。


ii.Options Indexes FollowSymLinks


Options中Indexes表示当网页不存在的时候允许索引显示目录中的文件;FollowSymLinks表示是否允许访问符号链接文件。


iii.AllowOverride All

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c08aea3bd7b9d288d4ca7f75a2f94bc1.html