美文网首页
httpd-2.4 - 虚拟主机的配置(3种实现方式)

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

作者: 学渣角鹿白 | 来源:发表于2018-10-15 14:51 被阅读0次

    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.comhttp://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,分别显示对应内容:

    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
    <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.comhttp://www2.server.com,显示对应内容:

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

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

    相关文章

      网友评论

          本文标题:httpd-2.4 - 虚拟主机的配置(3种实现方式)

          本文链接:https://www.haomeiwen.com/subject/nvexzftx.html