虚拟 web 主机
在同一台物理服务器中运行多个 Web 站点, 其中每一一个站点并不独立占用一台真正的计算机.
httpd 支持的虚拟主机类型
基于域名的虚拟主机
基于 IP 地址的虚拟主机
基于端口的虚拟主机
构建虚拟主机 ------ 基于域名
(1) 安装 bind,httpd 服务.
(2) 进入 named 服务的主配置文件, 将下图两个位置改为 "any".
[[email protected] ~]# VIM /etc/named.conf
(3) 进入 named 服务的区域配置文件, 添加两个域名的区域信息.
- [[email protected] ~]# VIM /etc/named.rfc1912.zones
- zone "aaa.com" IN {
- type master;
- file "aaa.com.zone";
- allow-update { none; };
- };
- zone "bbb.com" IN {
- type master;
- file "bbb.com.zone";
- allow-update { none; };
- };
(4) 进入 "/var/named/" 目录, 递归复制一份 "named.localhost" 区域数据配置文件, 命名为 "aaa.com.zone", 然后对其进行修改.
- [[email protected] ~]# cd /var/named/
- [[email protected] named]# ls
- data dynamic named.ca named.empty named.localhost named.loopback slaves
- [[email protected] named]# cp -p named.localhost aaa.com.zone
- [[email protected] named]#
- [[email protected] named]# VIM aaa.com.zone
- $TTL 1D
- @ IN SOA @ rname.invalid. (
- 0 ; serial
- 1D ; refresh
- 1H ; retry
- 1W ; expire
- 3H ) ; minimum
- NS @
- A 127.0.0.1
- www IN A 192.168.52.133
(5) 再复制一份 "aaa.com.zone" 文件, 命名为 "bbb.com.zone", 不用进行修改. 然后开启 named 服务, 关闭防火墙和增强性安全功能.
- [[email protected] named]# cp -p aaa.com.zone bbb.com.zone
- [[email protected] named]# systemctl start named
- [[email protected] named]#
- [[email protected] named]# systemctl stop firewalld.service
- [[email protected] named]# setenforce 0
- [[email protected] named]#
(6) 再开一台 win10 虚拟机, 将其 DNS 服务器的 IP 地址, 设置为刚才 Linux 系统的 IP 地址.
(7) 用 win10 主机去测试 DNS 服务能否解析, 解析成功.
(8) 进入 "/etc/httpd/conf" 目录, 创建一个 "extra/" 目录, 然后进入 "extra/" 目录, 用 VIM 编辑器, 新建一个配置文件 "vhost.conf", 在配置文件里输入以下内容.
- [[email protected] named]# cd /etc/httpd/conf
- [[email protected] conf]# ls
- httpd.conf magic
- [[email protected] conf]# mkdir extra
- [[email protected] conf]# ls
- extra httpd.conf magic
- [[email protected] conf]# cd extra/
- [[email protected] extra]# VIM vhost.conf
- <VirtualHost *:80>
- DocumentRoot "/var/www/html/aaa/"
- ServerName www.aaa.com
- ErrorLog "logs/www.aaa.com.error_log"
- CustomLog "logs/www.aaa.com.access_log" common
- <Directory "/var/www/html">
- Require all granted
- </Directory>
- </VirtualHost>
- <VirtualHost *:80>
- DocumentRoot "/var/www/html/bbb/"
- ServerName www.bbb.com
- ErrorLog "logs/www.bbb.com.error_log"
- CustomLog "logs/www.bbb.com.access_log" common
- <Directory "/var/www/html">
- Require all granted
- </Directory>
- </VirtualHost>
(9) 进入 "/var/www/html/" 创建两个目录 "aaa/","bbb/".
- [[email protected] extra]#
- [[email protected] extra]# cd /var/www/HTML/
- [[email protected] HTML]# ls
- [[email protected] HTML]# mkdir aaa bbb
- [[email protected] HTML]# ls
- aaa bbb
- [[email protected] HTML]#
(10) 进入 "aaa/" 目录, 新建一个站点首页文件, 内容如下:
- [[email protected] HTML]# cd aaa
- [[email protected] aaa]# ls
- [[email protected] aaa]# VIM index.HTML
- <h1>this is aaa Web</h1>
(11) 进入 "bbb/" 目录, 新建一个站点首页文件, 内容如下:
- [[email protected] aaa]# cd ../bbb
- [[email protected] bbb]# ls
- [[email protected] bbb]# VIM index.HTML
- <h1>this is bbb Web</h1>
(12) 进入 httpd 服务的主配置文件, 在末行将我们新建的配置文件写进主配置文件, 然后启动 httpd 服务.
- [[email protected] bbb]# VIM /etc/httpd/conf/httpd.conf
- Include conf/extra/vhost.conf
- [[email protected] bbb]# systemctl start httpd
- [[email protected] bbb]#
(13) 用 win10 主机去分别访问两个域名, 都能访问成功.
构建虚拟主机 ------ 基于端口
(1) 在上一个实验的基础上, 进入配置文件 "vhost.conf", 添加一个 "www.aaa.com" 域名的 8080 端口.
- [[email protected] bbb]# VIM /etc/httpd/conf/extra/vhost.conf
- <VirtualHost *:80>
- DocumentRoot "/var/www/html/aaa/"
- ServerName www.aaa.com
- ErrorLog "logs/www.aaa.com.error_log"
- CustomLog "logs/www.aaa.com.access_log" common
- <Directory "/var/www/html">
- Require all granted
- </Directory>
- </VirtualHost>
- <VirtualHost *:80>
- DocumentRoot "/var/www/html/bbb/"
- ServerName www.bbb.com
- ErrorLog "logs/www.bbb.com.error_log"
- CustomLog "logs/www.bbb.com.access_log" common
- <Directory "/var/www/html">
- Require all granted
- </Directory>
- </VirtualHost>
- <VirtualHost *:8080>
- DocumentRoot "/var/www/html/aaa02/"
- ServerName www.aaa.com
- ErrorLog "logs/www.aaa02.com.error_log"
- CustomLog "logs/www.aaa02.com.access_log" common
- <Directory "/var/www/html">
- Require all granted
- </Directory>
- </VirtualHost>
(2) 进入 "/var/www/html" 目录, 新建一个 "aaa02" 目录, 进入 "aaa02" 目录, 新建一个站点首页文件, 内容如下:
- [[email protected] bbb]# cd ../
- [[email protected] HTML]# mkdir aaa02
- [[email protected] HTML]# cd aaa02/
- [[email protected] aaa02]# VIM index.HTML
- <h1>this is aaa02 Web</h1>
(3) 进入 httpd 服务主配置文件, 添加监听端口, 同时将 IPv6 的端口的监听注销. 重启 httpd 服务.
- [[email protected] aaa02]# VIM /etc/httpd/conf/httpd.conf
- Listen 192.168.52.133:80
- Listen 192.168.52.133:8080
- #Listen 80
- [[email protected] aaa02]# systemctl restart httpd
- [[email protected] aaa02]#
(4) 再次用 win10 主机访问两个端口不同的域名, 访问成功.
构建虚拟主机 ------ 基于 IP
(1) 给 Linux 主机添加一块网卡, 查看 IP 地址.
(2) 进入配置文件 "vhost.conf", 进行如下输入:
- [[email protected] aaa02]# VIM /etc/httpd/conf/extra/vhost.conf
- <VirtualHost 192.168.52.133:80>
- DocumentRoot "/var/www/html/aaa/"
- ErrorLog "logs/www.aaa.com.error_log"
- CustomLog "logs/www.aaa.com.access_log" common
- <Directory "/var/www/html">
- Require all granted
- </Directory>
- </VirtualHost>
- <VirtualHost 192.168.52.139:80>
- DocumentRoot "/var/www/html/aaa02/"
- ErrorLog "logs/www.aaa02.com.error_log"
- CustomLog "logs/www.aaa02.com.access_log" common
- <Directory "/var/www/html">
- Require all granted
- </Directory>
- </VirtualHost>
(3) 分别对 "aaa" 站点与 "aaa02" 站点的主页文件进行如下修改:
- [[email protected] aaa02]# cd ../aaa
- [[email protected] aaa]# VIM index.HTML
- <h1>this is 133 aaa Web</h1>
- [[email protected] aaa]# cd ../aaa02
- [[email protected] aaa02]# VIM index.HTML
- <h1>this is 139 aaa02 Web</h1>
(4) 进入 httpd 主配置文件, 进行端口的添加与注释. 然后重启 httpd 服务.
- [[email protected] aaa02]# VIM /etc/httpd/conf/httpd.conf
- Listen 192.168.52.133:80
- Listen 192.168.52.139:80
- #Listen 192.168.52.133:8080
- #Listen 80
- [[email protected] aaa02]# systemctl restart httpd
- [[email protected] aaa02]#
(5) 用 win10 主机去访问两个不同 IP 地址的站点, 访问成功. 但是只能用 IP 地址访问, 一般情况访问网站用的是域名, 接下来我们进行域名访问不同 IP 地址站点的配置.
(6) 首先在配置文件 "vhost.conf" 中添加, 域名 "ServerName".
- [[email protected] aaa02]# VIM /etc/httpd/conf/extra/vhost.conf
- <VirtualHost 192.168.52.133:80>
- DocumentRoot "/var/www/html/aaa/"
- ServerName www.aaa.com
- ErrorLog "logs/www.aaa.com.error_log"
- CustomLog "logs/www.aaa.com.access_log" common
- <Directory "/var/www/html">
- Require all granted
- </Directory>
- </VirtualHost>
- <VirtualHost 192.168.52.139:80>
- DocumentRoot "/var/www/html/aaa02/"
- ServerName www.aaa02.com
- ErrorLog "logs/www.aaa02.com.error_log"
- CustomLog "logs/www.aaa02.com.access_log" common
- <Directory "/var/www/html">
- Require all granted
- </Directory>
- </VirtualHost>
(7) 进入 named 服务的区域配置文件中, 添加一个 "aaa02" 的区域信息.
- [[email protected] aaa02]# VIM /etc/named.rfc1912.zones
- zone "aaa.com" IN {
- type master;
- file "aaa.com.zone";
- allow-update { none; };
- };
- zone "aaa02.com" IN {
- type master;
- file "aaa02.com.zone";
- allow-update { none; };
- };
(8) 进入 "/var/named/" 目录, 递归复制一份 "aaa.com.zone" 文件, 命名为 "aaa02.com.zone", 同时对其进行如下修改:
- [[email protected] aaa02]# cd /var/named/
- [[email protected] named]# ls
- aaa.com.zone data named.ca named.localhost slaves
- bbb.com.zone dynamic named.empty named.loopback
- [[email protected] named]# cp -p aaa.com.zone aaa02.com.zone
- [[email protected] named]# VIM aaa02.com.zone
- $TTL 1D
- @ IN SOA @ rname.invalid. (
- 0 ; serial
- 1D ; refresh
- 1H ; retry
- 1W ; expire
- 3H ) ; minimum
- NS @
- A 127.0.0.1
- www IN A 192.168.52.139
(9) 再次用 win10 主机, 通过域名去访问两个不同 IP 地址的站点, 访问成功.
来源: http://www.bubuko.com/infodetail-3253584.html