httpd-2.4 - 虚拟主机的配置(3种实现方式)

http服务器物理主机性能强劲?可以配置多个虚拟主机,充分利用物理资源。

前提

物理主机IP为192.168.43.78,安装httpd-2.4
分别配置:

  1. 基于IP的两台httpd虚拟主机,URL分别为http://192.168.43.78和http://192.168.43.79;
  2. 基于PORT的两台虚拟主机,URL分别为http://192.168.43.78和http://192.168.43.78:8080
  3. 基于FQDN的两台虚拟主机,URL分别为http://www1.server.com和http://www2.server.com

httpd-2.4虚拟主机的配置项


      ServerName FQDN
      DocumentRoot ""
      ErrorLog ""
      CustomLog "" Combined
      
            Options {None|Index|FollowSymLink}
            AllowOverride None
            Require all granted  #也可以指定IP,或基于用户的访问控制
      
      Alias
     等等

一、基于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
        

This is www1 Server

# vim /data/www2/html/index.html

This is www2 Server

(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

        ServerName "www1.server.com"
        DocumentRoot "/data/www1/html"
        
                Options None
                AllowOverride None
                Require all granted
        
        Customlog "logs/www1/access_log" combined
        ErrorLog "logs/www1/error_log"

# 增加并编辑www2虚拟主机的配置文件
# vim vhost_www2.conf

        ServerName "www2.server.com"
        DocumentRoot "/data/www2/html"
        
                Options None
                AllowOverride None
                Require all granted
        
        Customlog "logs/www2/access_log" combined
        ErrorLog "logs/www2/error_log"

(4) 验证

# 检查配置文件语法,并重启服务
# httpd -t
Syntax OK
# systemctl restart httpd.service

浏览器分别访问http://192.168.43.78和http://192.168.43.79,分别显示对应内容:

httpd-2.4_基于IP的虚拟主机配置_www1主页.JPG

httpd-2.4_基于IP的虚拟主机配置_www2主页.JPG

二、基于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

        ServerName "www2.server.com"
        DocumentRoot "/data/www2/html"
        
                Options None
                AllowOverride None
                Require all granted
        
        Customlog "logs/www2/access_log" combined
        ErrorLog "logs/www2/error_log"

(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

        ServerName "www1.server.com"
        DocumentRoot "/data/www1/html"
        
                Options None
                AllowOverride None
                Require all granted
        
        Customlog "logs/www1/access_log" combined
        ErrorLog "logs/www1/error_log"


# vim vhost_www2.conf

        ServerName "www2.server.com"
        DocumentRoot "/data/www2/html"
        
                Options None
                AllowOverride None
                Require all granted
        
        Customlog "logs/www2/access_log" combined
        ErrorLog "logs/www2/error_log"

(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的虚拟主机配置_www1主页.JPG

httpd-2.4_基于FQDN的虚拟主机配置_www2主页.JPG

自此,httpd-2.4中三种虚拟主机的配置方式已实践完成。

你可能感兴趣的:(httpd-2.4 - 虚拟主机的配置(3种实现方式))