HTTP-虚拟主机的配置
虚拟主机指的是在一台服务器配置多个站点的一种方法。由于大多数情况下一个网站的流量并不足以对一个服务器造成压力,也就会造成资源的浪费,于是就产生了在一台服务器搭建多个网站的技术。也就是虚拟主机。实现虚拟主机通常有一下三种方法。
- 基于IP地址,即为每个虚拟主机配置一个IP地址。
通常情况下,这种方法不显示,主要是公网IP地址是很稀缺的资源,所以在实际环境中并不会使用此种方法,但这里还是说一下此种方法的配置。
假如我们有两个站点,位置分别在/var/www/site1和/var/www/site2。对应的IP地址为1.1.1.1和2.2.2.2,那么参照如下配置。
<VirtualHost 1.1.1.1:80>
ServerName www.a.com
DocumentRoot "/var/www/site1"
<Directory /var/www/site1>
Require all gented
</Directory>
</VirtualHost>
<VirtualHost 2.2.2.2:80>
ServerName www.b.com
DocumentRoot "/var/www/site2"
<Directory /var/www/site2>
Require all gented
</Directory>
</VirtualHost>
然后重启服务即可,需要注意的是,关于虚拟主机的配置文件可能已经默认存在,并且存放在单独的文件 中,需要查找相关配置以避免配置冲突。还有,配置文件中ServerName的配置在此种方式中并不生效,可以随便填写。包括下面的基于端口的虚拟主机也是同样。
基于端口的虚拟主机
基于端口就是给不同的站点配置不同的端口,但使用同一个IP地址,在实际使用中其实也没有太多价值,主要是DNS解析的时候并不能直接指向端口。所以会造成很多麻烦。这里同样简单演示一下其配置,还是使用上面的信息。端口分别给80和8080.
listen 80 listen 8080 <VirtualHost 1.1.1.1:80> ServerName www.a.com DocumentRoot "/var/www/site1" <Directory /var/www/site1> Require all gented </Directory> </VirtualHost> <VirtualHost 1.1.1.1:8080> ServerName www.b.com DocumentRoot "/var/www/site2" <Directory /var/www/site2> Require all gented </Directory> </VirtualHost>
以上,配置内容并不会有什么差别,只是IP和端口变了一下。当然访问的时候由于使用了非标准端口,所以需要手动指定具体的端口才能访问。
基于FQDN的虚拟主机
和上面的两种方法,此种是真正在生产中使用的方法,使用此种方法需要用到servername选项了,在上面两种方法中虽然有配置,但实际并不起到任何作用。下面的配置方法就必须注意此项了,系统会根据此项来判断到底是访问的哪个站点。配置如下:
<VirtualHost *:80>
ServerName www.a.com
DocumentRoot "/var/www/site1"
<Directory /var/www/site1>
Require all gented
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.b.com
DocumentRoot "/var/www/site2"
<Directory /var/www/site2>
Require all gented
</Directory>
</VirtualHost>
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!