httpd 虚拟主机的三种配置方式

实验环境

物理主机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 虚拟主机的配置项

<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的主页:
在这里插入图片描述

三、基于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
在这里插入图片描述

(2) 浏览器分别访问http://www1.server.com和http://www2.server.com,显示对应内容:
在这里插入图片描述

在这里插入图片描述

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值