阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7中httpd服务构建虚拟Web主机与虚拟目录设置详解

542次阅读
没有评论

共计 6083 个字符,预计需要花费 16 分钟才能阅读完成。

虚拟 Web 主机指的是在同一台服务器中运行多个 Web 站点,其中的每个站点实际并不独立占用整个服务器,因此被称为“虚拟”Web 主机。通过虚拟 Web 主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。

使用 httpd 服务可以非常方便地构建虚拟主机服务器,只需要运行一个 httpd 服务就能同事支撑大量的 Web 站点。

httpd 服务支持的虚拟主机类型包括以下三种:

基于域名:为每个虚拟主机使用不同的域名,但是其对应的 IP 地址是相同的;

基于 IP 地址:为每个虚拟主机使用不同的域名,其各自对应的 IP 地址也不相同;

基于端口:这种方式并不使用域名、IP 地址来区分不同的站点内容,而是使用不同的 TCP 端口,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。

这几种虚拟 Web 主机中,基于域名的虚拟主机是使用最为广泛的;基于 IP 地址和基于端口的虚拟主机一般只适用于公司内部。

基于域名主机的虚拟主机实现步骤:

1. 为虚拟主机提供域名解析

首先需要搭建 DNS 服务以便提供域名解析,搭建 DNS 服务详细步骤可以参考博文 CentOS 7 搭建 DNS 服务,这里只介绍关键配置信息:

 [root@localhost /]# vim /etc/named.conf
// 修改 DNS 服务主配置文件
                               …………    // 省略部分内容
zone "a.com" IN {
        type master;
        file "a.com.zone";
};
zone "b.com" IN {
        type master;
        file "b.com.zone";
};
[root@localhost /]# vim /var/named/a.com.zone
// 编写 a.com 区域配置文件

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       IN      NS      www.a.com.
www     IN      A       192.168.1.1
[root@localhost /]# vim /var/named/b.com.zone
// 编写 b.com 区域配置文件

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       IN      NS      www.b.com.
www     IN      A       192.168.1.1
[root@localhost /]# systemctl start named
// 启动 DNS 服务
[root@localhost /]# nslookup
> www.a.com
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   www.a.com
Address: 192.168.1.1
> www.b.com
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   www.b.com
Address: 192.168.1.1
// 测试解析

2. 为虚拟主机准备网页文档

[root@localhost /]# mkdir -p /var/www/html/acom
[root@localhost /]# mkdir -p /var/www/html/bcom
[root@localhost /]# echo "<h1>www.a.com</h1>" > /var/www/html/acom/index.html
[root@localhost /]# echo "<h1>www.b.com</h1>" > /var/www/html/bcom/index.html
// 文件存放位置可以自定义

3. 添加虚拟主机配置
当虚拟 Web 主机的数量较多时,建议使用独立的虚拟主机配置文件,然后在 httpd 服务的主配置文件通过 Include 加载这些配置。这样可以将对 httpd 服务的主配置文件的修改减至最少,更方便配置内容的维护。

root@localhost /]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 
// 创建独立的配置文件
<VirtualHost *:80>                                          //* 表示所有地址
    ServerAdmin webmaster@a.com              // 管理员邮箱地址       
    DocumentRoot "/var/www/html/acom"       // 设置 a 虚拟站点区域 
    ServerName www.a.com                           // 域名
    ServerAlias www.dummy-host.example.com       // 别名
    ErrorLog "logs/www.a.com.error_log"                  // 错误日志
    CustomLog "logs/www.a.com.access_log" common    // 访问日志
    <Directory "/var/www/html">
      Require  all granted              // 允许所有主机访问
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@b.com
    DocumentRoot "/var/www/html/bcom"
    ServerName www.b.com
    ServerAlias www.dummy1-host.example.com
    ErrorLog "logs/www.b.com.error_log"
    CustomLog "logs/www.b.com.access_log" common
    <Directory "/var/www/html">
      Require  all granted
    </Directory>
</VirtualHost>
[root@localhost /]# vim /usr/local/httpd/conf/httpd.conf 
// 编写 httpd 服务的主配置文件
                  …………              // 省略部分内容
Include conf/extra/httpd-vhosts.conf
// 加载独立的配置文件
[root@localhost /]# systemctl start httpd
// 启动 httpd 服务

4. 客户机访问测试
CentOS 7 中 httpd 服务构建虚拟 Web 主机与虚拟目录设置详解
CentOS 7 中 httpd 服务构建虚拟 Web 主机与虚拟目录设置详解

基于 IP 地址的虚拟主机实现步骤
实验环境中,所以在服务器上模拟一个 IP 地址

[root@localhost /]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
// 复制网卡配置文件
[root@localhost network-scripts]# vim ifcfg-ens33:0
// 修改刚才复制的网卡配置文件
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33:0                          // 必须修改
UUID=fddc7556-c28d-4149-afb8-13356cdeb279
DEVICE=ens33:0                       // 必须修改
ONBOOT=yes
IPADDR=192.168.1.11               // 必须修改
[root@localhost network-scripts]# ifdown ens33:0;ifup ens33:0
// 重新加载 ens33:0 网卡的配置文件
[root@localhost network-scripts]# ifconfig ens33:0
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.11  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 00:0c:29:98:42:5d  txqueuelen 1000  (Ethernet)
[root@localhost /]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 
// 修改虚拟主机配置文件
<VirtualHost 192.168.1.1:80>                              // 把 * 改为 IP 地址
    ServerAdmin webmaster@a.com
    DocumentRoot "/var/www/html/acom"
    ServerName www.a.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/www.a.com.error_log"
    CustomLog "logs/www.a.com.access_log" common
    <Directory "/var/www/html">
      Require  all granted
    </Directory>
</VirtualHost>

<VirtualHost 192.168.1.11:80>                    // 把 * 改为 IP 地址
    ServerAdmin webmaster@b.com
    DocumentRoot "/var/www/html/bcom"
    ServerName www.b.com
    ServerAlias www.dummy1-host.example.com
    ErrorLog "logs/www.b.com.error_log"
    CustomLog "logs/www.b.com.access_log" common
    <Directory "/var/www/html">
      Require  all granted
    </Directory>
</VirtualHost>
[root@localhost /]# systemctl restart httpd
// 重新加载 httpd 服务

客户机访问测试
CentOS 7 中 httpd 服务构建虚拟 Web 主机与虚拟目录设置详解
CentOS 7 中 httpd 服务构建虚拟 Web 主机与虚拟目录设置详解

基于端口的虚拟主机实现步骤
修改虚拟主机配置文件

root@localhost /]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 
<VirtualHost *:80>
    ServerAdmin webmaster@a.com
    DocumentRoot "/var/www/html/acom"
    ServerName www.a.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/www.a.com.error_log"
    CustomLog "logs/www.a.com.access_log" common
    <Directory "/var/www/html">
      Require  all granted
    </Directory>
</VirtualHost>

<VirtualHost *:8080>                              // 修改端口信息
    ServerAdmin webmaster@b.com
    DocumentRoot "/var/www/html/bcom"
    ServerName www.b.com
    ServerAlias www.dummy1-host.example.com
    ErrorLog "logs/www.b.com.error_log"
    CustomLog "logs/www.b.com.access_log" common
    <Directory "/var/www/html">
      Require  all granted
    </Directory>
</VirtualHost>
Listen 8080             // 监听 8080 端口,写在主配置文件或虚拟主机配置文件都可以

[root@localhost /]# systemctl restart httpd
// 重新加载 httpd 服务

强烈建议,修改端口信息的时候,千万不能修改为 1~1024 之间的端口,因为这些端口已经被系统服务使用!

客户机访问测试
CentOS 7 中 httpd 服务构建虚拟 Web 主机与虚拟目录设置详解
CentOS 7 中 httpd 服务构建虚拟 Web 主机与虚拟目录设置详解

虚拟目录实现步骤

[root@localhost httpd-2.4.25]# mkdir /yum
[root@localhost httpd-2.4.25]# echo "<h1>www.yum.com</h1>" > /yum/index.html
// 创建虚拟目录测试文件
[root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf 
// 编写 httpd 服务主配置文件
                        …………     // 省略部分内容
Alias /test "/yum"        // 定义虚拟目录“/test”,物理路径为“/yum”<Directory "/yum">        // 定义目录访问权限
Options Indexes MultiViews FollowSymLinks      // 固定格式,这项可以忽略
AllowOverride None             // 固定格式。这项可以忽略
Order allow,deny    // 匹配顺序为先允许,后拒绝,这项可以忽略
Allow from all        // 设置允许所有人访问,这项可以忽略
Require all granted    // 对这个目录给予授权
</Directory>
[root@localhost httpd-2.4.25]# systemctl restart httpd
// 重新启动 httpd 服务

客户机测试访问
CentOS 7 中 httpd 服务构建虚拟 Web 主机与虚拟目录设置详解

如果想针对虚拟目录开启身份验证
将上面的配置做如下修改:

[root@localhost httpd]# vim /usr/local/httpd/conf/httpd.conf 
// 修改 httpd 服务主配置文件
                           …………               // 省略部分内容
Alias /test "/yum"
<Directory "/yum">
Options Indexes MultiViews FollowSymLinks                // 固定格式可以省略
AllowOverride None                                                      // 固定格式可以省略                                                 
AuthName "test"                               // 定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示
AuthType Basic                                // 设置认证的类型,Basic 为基本的认证
AuthUserFile /usr/local/httpd/user    // 设置用于保存用户账号、密码的认证文件路径
Require valid-user                            // 要求只有认证文件中的合法用户才能访问。valid-user 表示所有合法用户
</Directory>
[root@localhost htdocs]# cd /usr/local/httpd/
[root@localhost httpd]# bin/htpasswd -c /usr/local/httpd/conf/123.txt xiaozhang
New password: 
Re-type new password: 
Adding password for user xiaozhang
[root@localhost httpd]# systemctl restart httpd
// 重新启动 httpd 服务

针对 Web 网站设置用户限制,可以参考博文:CentOS 7 中 httpd 服务的用户限制详解
客户机访问测试
CentOS 7 中 httpd 服务构建虚拟 Web 主机与虚拟目录设置详解

如果虚拟目录针对虚拟主机,请在虚拟主机配置文件中添加。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6083字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7981653
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
免费领取huggingface的2核16G云服务器,超简单教程

免费领取huggingface的2核16G云服务器,超简单教程

免费领取 huggingface 的 2 核 16G 云服务器,超简单教程 前言 HuggingFace.co...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...