Apache构建虚拟web主机
虚拟web主机介绍
虚拟 Web 主机指的是在同一台服务器中运行多个 Web 站点,其中的每一个站点实际
上并不独立占用整个服务器,因此被称为“虚拟”Web 主机。通过虚拟 Web 主机服务可以充
分利用服务器的硬件资源,从而大大降低网站构建及运行成本。
使用 httpd 可以非常方便地构建虚拟主机服务器,只需要运行一个 httpd 服务就能够同
时支撑大量的 Web 站点。httpd 支持的虚拟主机类型包括以下三种。
●基于域名:为每个虚拟主机使用不同的域名,但是其对应的 IP 地址是相同的。 例如,www.51xit.top 和
www.52xit.top 站点的 IP 地址都是 192.168.100.41。这 是使用最为普遍的虚拟 Web 主机类型。
●基于 IP 地址:为每个虚拟主机使用不同的域名,且各自对应的 IP 地址也不相
同。这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛。(安全)
●基于端口:这种方式并不使用域名、IP 地址来区分不同的站点内容,而是使用 了不同的TCP
端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才 能访问。
配置办法
先开启虚拟主机模块,并做好测试准备
[root@localhost ~]# mkdir -p /opt/www/html/123.top //创建网页首页目录
[root@localhost ~]# mkdir -p /opt/www/html/abc.top //创建网页首页目录
[root@localhost ~]# vim /opt/www/html/123.top/index.html //编辑首页内容
<html><body><h1>www.123.top</h1>
<img src="t.jpg"/>
</body></html>
[root@localhost ~]# vim /opt/www/html/abc.top/index.html //编辑首页内容
<html><body><h1>www.abc.top</h1>
<img src="g.jpg"/>
</body></html>
[root@localhost htdocs]# vi /etc/httpd.conf
Include conf/extra/httpd-vhosts.conf ##去掉#号,开启虚拟主机模块
1.基于域名
[root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost*:80> ####设置 123.top 虚拟站点区域
DocumentRoot "/opt/www/html/123.top" //网页首页目录
ServerName www.123.top //域名
ErrorLog "logs/www.123.top.error_log" //错误日志文件(默认在/usr/loacl/httpd/log目录下)
CustomLog "logs/www.123.top.access_log" common //访问日志文件
<Directory "/opt/www/html"> ####设置目录访问权限
Require all granted ####允许所有都有访问
</Directory>
</VirtualHost>
<VirtualHost*:80> ####设置 abc.top 虚拟站点区域
DocumentRoot "/opt/www/html/abc.top"
ServerName www.abc.top
ErrorLog "logs/www.abc.top.error_log"
CustomLog "logs/www.abc.top.access_log" common
<Directory "/opt/www/html"> ####设置目录访问权限
Require all granted
</Directory>
</VirtualHost>
[root@localhost ~]# systemctl restart httpd ##重启生效
映射:
[root@localhost opt]# vi /etc/hosts //做主机域名映射
末尾添加:
192.168.200.60 www.123.top
192.168.200.60 www.abc.top
测试验证
浏览器输入:www.123.top
浏览器输入:www.abc.top
2.基于 IP 地址
主机上有2块网卡
网卡1:192.168.100.41
网卡2:192.168.100.42
修改配置文件:
[root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.200.60:80>
DocumentRoot "/opt/www/html/123.top" /
ServerName www.123.top //域名
ErrorLog "logs/www.123.top.error_log"
CustomLog "logs/www.123.top.access_log" common
<Directory "/opt/www/html">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.200.70:80>
DocumentRoot "/opt/www/html/abc.top"
ServerName www.abc.top
ErrorLog "logs/www.abc.top.error_log"
CustomLog "logs/www.abc.top.access_log" common
<Directory "/opt/www/html">
Require all granted
</Directory>
</VirtualHost>
[root@localhost ~]# systemctl restart httpd
测试验证
浏览器输入:http://192.168.200.60
浏览器输入:http://192.168.200.70
3.基于端口的虚拟主机
修改配置文件:
[root@localhost ~]# vi /etc/httpd.conf //基于端口的web虚拟主机,需要去主配置文件中监听端口(区别于上两种)
Listen 192.168.200.60:80
Listen 192.168.200.60:8080
[root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.200.60:80>
DocumentRoot "/opt/www/html/123.top" /
ServerName www.123.top //域名
ErrorLog "logs/www.123.top.error_log"
CustomLog "logs/www.123.top.access_log" common
<Directory "/opt/www/html">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.200.60:8080>
DocumentRoot "/opt/www/html/abc.top"
ServerName www.abc.top
ErrorLog "logs/www.abc.top.error_log"
CustomLog "logs/www.abc.top.access_log" common
<Directory "/opt/www/html">
Require all granted
</Directory>
</VirtualHost>
测试验证
浏览器输入:http://192.168.200.60:80
浏览器输入:http://192.168.200.60:8080