http服务器物理主机性能强劲?可以配置多个虚拟主机,充分利用物理资源。
前提
物理主机IP为192.168.43.78,安装httpd-2.4
分别配置:
- 基于IP的两台httpd虚拟主机,URL分别为http://192.168.43.78和http://192.168.43.79;
- 基于PORT的两台虚拟主机,URL分别为http://192.168.43.78和http://192.168.43.78:8080
- 基于FQDN的两台虚拟主机,URL分别为http://www1.server.com和http://www2.server.com
httpd-2.4虚拟主机的配置项
<VitualHost IP:PORT>
ServerName FQDN
DocumentRoot ""
ErrorLog ""
CustomLog "" Combined
<Directory "">
Options {None|Index|FollowSymLink}
AllowOverride None
Require all granted #也可以指定IP,或基于用户的访问控制
</Directory>
Alias
等等
</VirtualHost>
一、基于IP的虚拟主机配置实践
基于IP的虚拟主机虽然节约了物理资源,但需要额外配置IP地址,如果是公网生产环境,也是一项额外成本。
配置要求:
(1) 站点1的IP为192.168.43.78,域名为www1.server.com,文档路径为/data/www1/html;
(2) 站点2的IP为192.168.43.79,域名为www2.server.com,文档路径为/data/www2/html。
配置步骤:
(1) 创建各自的文档路径和首页文件
# mkdir -pv /data/www{1,2}/html
#编辑主页以示区分。
# vim /data/www1/html/index.html
<h1>This is www1 Server</h1>
# vim /data/www2/html/index.html
<h1>This is www2 Server</h1>
(2) 为服务器主机设置2个IP地址
# 这里我是直接编辑网卡配置文件,设置IPADDR1和IPADDR2,没有设置网卡别名
# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
...
IPADDR1="192.168.43.78"
PREFIX1="24"
IPADDR2="192.168.43.79"
PREFIX2="24"
...
# 重启网络服务以立即生效
# systemctl restart network.service
(3) 增加并编辑虚拟机配置文件
# 跳转到配置文件目录
# cd /etc/httpd/conf.d/
# 增加并编辑www1虚拟主机的配置文件
# vim vhost_www1.conf
<VirtualHost 192.168.43.78:80>
ServerName "www1.server.com"
DocumentRoot "/data/www1/html"
<Directory "/data/www1/html">
Options None
AllowOverride None
Require all granted
</Directory>
Customlog "logs/www1/access_log" combined
ErrorLog "logs/www1/error_log"
</VirtualHost>
# 增加并编辑www2虚拟主机的配置文件
# vim vhost_www2.conf
<VirtualHost 192.168.43.79:80>
ServerName "www2.server.com"
DocumentRoot "/data/www2/html"
<Directory "/data/www2/html">
Options None
AllowOverride None
Require all granted
</Directory>
Customlog "logs/www2/access_log" combined
ErrorLog "logs/www2/error_log"
</VirtualHost>
(4) 验证
# 检查配置文件语法,并重启服务
# httpd -t
Syntax OK
# systemctl restart httpd.service
浏览器分别访问http://192.168.43.78和http://192.168.43.79,分别显示对应内容:
二、基于PORT的虚拟主机配置实践
基于PORT的虚拟主机虽然节约了IP地址成本,但对于用户来说,输入url时还需要指定端口,对于没有IT基础的用户来说,也是一项挑战,不利于拓宽用户面。
配置要求:
(1) 站点1的IP:PORT为192.168.43.78:80,域名为www1.server.com,文档路径为/data/www1/html;
(2) 站点2的IP:PORT为192.168.43.78:8080,域名为www2.server.com,文档路径为/data/www2/html。
配置步骤:
(1) www1的配置不用更改,更改www2的配置
Listen 8080 #添加监听端口8080
<VirtualHost 192.168.43.78:8080>
ServerName "www2.server.com"
DocumentRoot "/data/www2/html"
<Directory "/data/www2/html">
Options None
AllowOverride None
Require all granted
</Directory>
Customlog "logs/www2/access_log" combined
ErrorLog "logs/www2/error_log"
</VirtualHost>
(2)验证
*浏览器访问http://192.168.43.78:8080,显示www2的主页:
httpd-2.4_基于PORT的虚拟主机配置_www2主页.JPG
三、基于FQDN的虚拟主机配置实践
如果有自己的DNS服务器,基于FQDN的虚拟主机只需额外指定一个主机名,在DNS服务器中添加条目,就可以访问;或者额外申请一个域名。
这里使用在本机上搭建的bind作为DNS服务器,配置分为两步。
配置要求
(1) 站点1的IP:PORT为:80,域名为www1.server.com,文档路径为/data/www1/html;
(2) 站点2的IP:PORT为:80,域名为www2.server.com,文档路径为/data/www2/html。
因为不再需要IP和PORT来区分虚拟主机,所以IP为*,即本机的所有IP,端口为http默认端口80
1. 配置DNS服务,并将http客户端的DNS指向对应地址
(1) 在bind配置文件/etc/named.rfc1912.zones中定义区域
# vim /etc/named.rfc1912.zones
zone "server.com" IN {
type master;
file "server.com.zone";
};
(2) 建立并编辑区域数据文件,用于解析server.com域中的域名
# vim /var/named/server.com.zone
$TTL 3600
$ORIGIN server.com.
@ IN SOA ns1.server.com. dnsadmin.server.com. (
2018101501
1H
10M
3D
1D )
IN NS ns1.server.com.
IN MX 10 mx1
ns1 IN A 192.168.43.78
mx1 IN A 192.168.43.78
www1 IN A 192.168.43.78
www2 IN A 192.168.43.78
(3) 重载配置文件和区域数据文件
# 检查配置文件
# named-checkconf
# 检查区域数据文件
# named-checkzone server.com /var/named/server.com.zone
zone server.com/IN: loaded serial 2018101501
OK
# 重载
# rndc reload
server reload successful
2.配置基于FQDN的虚拟主机
(1) 更改www1和www2的配置
# vim vhost_www1.conf
<VirtualHost *:80>
ServerName "www1.server.com"
DocumentRoot "/data/www1/html"
<Directory "/data/www1/html">
Options None
AllowOverride None
Require all granted
</Directory>
Customlog "logs/www1/access_log" combined
ErrorLog "logs/www1/error_log"
</VirtualHost>
# vim vhost_www2.conf
<VirtualHost *:80>
ServerName "www2.server.com"
DocumentRoot "/data/www2/html"
<Directory "/data/www2/html">
Options None
AllowOverride None
Require all granted
</Directory>
Customlog "logs/www2/access_log" combined
ErrorLog "logs/www2/error_log"
</VirtualHost>
(2) 检查并重启服务
# httpd -t
Syntax OK
# systemctl restart httpd.service
3. 验证
(1) 将客户端的DNS服务器指向192.168.43.78
httpd-2.4_基于FQDN的虚拟主机配置_客户端DNS配置.JPG
(2) 浏览器分别访问http://www1.server.com和http://www2.server.com,显示对应内容:
httpd-2.4_基于FQDN的虚拟主机配置_www2主页.JPG
自此,httpd-2.4中三种虚拟主机的配置方式已实践完成。
网友评论