说明
所谓虚拟主机不外乎就是一个物理主机上存在多个虚拟站点;通常httpd的虚拟主机有三类,分别是基于ip的虚拟主机、基于端口的虚拟主机以及基于FQDN的虚拟主机;不难理解基于ip的虚拟主机就是以不同IP来区分不同的虚拟主机;基于端口的虚拟主机就是以不同端口区分不同的虚拟主机,基于fqdn的虚拟主机就是以不同用户请求报文中的host首部来区分的虚拟主机。
虚拟主机
httpd里虚拟主机的配置方法是由<virtualhost IP:PORT> …</virtualhost>
配置块来配置;其中httpd2.2在启用虚拟主机配置前需要将其中心主机禁用,禁用方法很简单,就是把中心主机里的documentroot指令注释即可;在httpd2.4中,我们就不需要去关闭中心主机,在配置了虚拟主机以后,中心主机自然失效,不需要人为手动注释;对于在中心主机里可配置的指令大多数都可以用于虚拟主机配置块中;用法和中心主机里配置几乎没有啥差别
示例:基于IP的虚拟主机实现
提供两个基于IP的虚拟主机,一个是192.168.6.129:80,一个是192.168.6.131:80的主机;我们在对应目录下创建好主页文件,重载配置文件,这两个虚拟主机就可以生效了;
准备条件:两张网卡,分别表示两个不同的虚拟主机
步骤:
1.在/etc/httpd/conf.d下创建test.conf配置文件(/etc/httpd/conf.d目录下创建*.conf结尾的文件都会被自动读取为配置文件)
<virtualhost 192.168.6.129> #虚拟机IP访问地址
servername www.X.com #服务域名
documentroot /web/vhosts/x #主网站存放目录
<directory /web/vhosts/x>
options none
allowoverride none
require all granted #允许所有人访问
</directory>
errorlog /var/log/httpd/x_error.log #错误日志存放目录
LogLevel warn #错误等级
customlog /var/log/httpd/x_access.log combined #访问日志
</virtualhost>
<virtualhost 192.168.6.131> #虚拟机IP访问地址
servername www.Y.com #服务域名
documentroot /web/vhosts/y #主网站存放目录
<directory /web/vhosts/y>
options none
allowoverride none
require all granted #允许所有人访问
</directory>
errorlog /var/log/httpd/www2_error.log #错误日志存放目录
LogLevel warn #错误等级
customlog /var/log/httpd/y_access.log combined #访问日志
</virtualhost>
2.创建两个虚拟机对应的文件存放目录
mkdir -p web/vhosts/{x,y}
3.创建对应目录下的主页面index.html
3.1 在/web/vhosts/x/目录下
vim index.html
<h1>
This is www.X.com</br>
hostname : www.X.com</br>
IP : 192.168.6.129</br>
port : 80
</h1>
3.2在/web/vhosts/y/目录下
<h1>
This is www.Y.com</br>
hostname : www.Y.com</br>
IP : 192.168.6.131</br>
port : 80
</h1>
4.重启httpd 服务
4.1检查语法是否有错误
httpd -t
4.2重启httpd 服务
systemctl restart httpd
结果展示:
日志文件自动生成
两个目录虚拟模拟两个站点
2.示例:基于端口的虚拟主机实现
很简单 只需要在原本/etc/httpd/conf.d/test.conf配置文件下稍微修改下就可以了
红框就是修改的部分,这样就可以实现访问两个不同的端口实现访问不同的虚拟站点了
修改完后重启下httpd 服务