三十二、【Linux网站服务器】搭建httpd服务器演示虚拟主机配置、网页重定向功能

httpd服务器功能演示

一、虚拟主机配置

虚拟主机技术全景

端口号 IP地址 域名 客户端请求 识别方式 基于端口的虚拟主机 基于IP的虚拟主机 基于域名的虚拟主机 响应8080/8081端口请求 响应不同IP的请求 响应不同域名的请求

虚拟主机目录规范
bash 复制代码
/var/www/
├── site1.com
│   ├── public_html    # 网站根目录
│   ├── logs            # 专属日志
│   └── cgi-bin         # CGI脚本
└── site2.com
    ├── public_html
    ├── logs
    └── tmp             # 临时文件
1. 基于端口的虚拟主机(8080/8081)
bash 复制代码
# 创建网站目录
[root@localhost ~]# mkdir -p /var/www/{port8080,port8081}

# 写入测试页面
[root@localhost ~]# echo "Port 8080 Home" > /var/www/port8080/index.html
[root@localhost ~]# echo "Port 8081 Home" > /var/www/port8081/index.html

# 创建配置文件
[root@localhost ~]# vi /etc/httpd/conf.d/port-vhost.conf
# 添加以下内容👇
Listen 8080
Listen 8081

<VirtualHost *:8080>
    DocumentRoot "/var/www/port8080"
    ErrorLog "/var/log/httpd/port8080-error.log"
</VirtualHost>

<VirtualHost *:8081>
    DocumentRoot "/var/www/port8081"
    ErrorLog "/var/log/httpd/port8081-error.log"
</VirtualHost>

# 开放防火墙端口
[root@localhost ~]# firewall-cmd --permanent --add-port={8080,8081}/tcp
[root@localhost ~]# firewall-cmd --reload
[root@localhost ~]# systemctl restart httpd
2. 基于IP的虚拟主机(192.168.1.100/192.168.1.101)
bash 复制代码
# 添加临时IP
[root@localhost ~]# ip addr add 192.168.1.101/24 dev eth0

# 创建网站目录
[root@localhost ~]# mkdir -p /var/www/{ip100,ip101}
[root@localhost ~]# echo "IP 192.168.1.100" > /var/www/ip100/index.html
[root@localhost ~]# echo "IP 192.168.1.101" > /var/www/ip101/index.html

# 创建配置文件
[root@localhost ~]# vi /etc/httpd/conf.d/ip-vhost.conf
# 添加以下内容👇
<VirtualHost 192.168.1.100:80>
    DocumentRoot "/var/www/ip100"
    ServerName 192.168.1.100
</VirtualHost>

<VirtualHost 192.168.1.101:80>
    DocumentRoot "/var/www/ip101"
    ServerName 192.168.1.101
</VirtualHost>

[root@localhost ~]# systemctl restart httpd
3. 基于域名的虚拟主机(site1.com/site2.com)
bash 复制代码
# 创建网站目录
[root@localhost ~]# mkdir -p /var/www/{site1,site2}
[root@localhost ~]# echo "Site1 Home" > /var/www/site1/index.html
[root@localhost ~]# echo "Site2 Home" > /var/www/site2/index.html

# 创建配置文件
[root@localhost ~]# vi /etc/httpd/conf.d/domain-vhost.conf
# 添加以下内容👇
<VirtualHost *:80>
    ServerName site1.com
    DocumentRoot "/var/www/site1"
</VirtualHost>

<VirtualHost *:80>
    ServerName site2.com
    DocumentRoot "/var/www/site2"
</VirtualHost>

# 配置本地DNS解析
[root@localhost ~]# echo "127.0.0.1 site1.com site2.com" >> /etc/hosts
[root@localhost ~]# systemctl restart httpd

二、网页重定向配置

HTTP 跳转至 HTTPS
bash 复制代码
# 启用重写模块
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf
# 取消注释👇
LoadModule rewrite_module modules/mod_rewrite.so

# 配置重定向规则
[root@localhost ~]# vi /etc/httpd/conf.d/redirect.conf
# 添加以下内容👇
<VirtualHost *:80>
    ServerName site1.com
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

[root@localhost ~]# systemctl restart httpd

命令总结表格

演示命令 功能描述 关键参数/文件
mkdir -p /var/www/{port8080,port8081} 创建端口虚拟主机目录 -p 递归创建目录
vi /etc/httpd/conf.d/port-vhost.conf 配置端口虚拟主机 Listen 8080 定义监听端口
ip addr add 192.168.1.101/24 dev eth0 添加临时IP地址 dev eth0 指定网卡
vi /etc/httpd/conf.d/ip-vhost.conf 配置IP虚拟主机 <VirtualHost 192.168.1.100:80> IP绑定
echo "127.0.0.1 site1.com" >> /etc/hosts 本地DNS解析 /etc/hosts 域名映射
vi /etc/httpd/conf.d/domain-vhost.conf 配置域名虚拟主机 ServerName site1.com 域名标识
vi /etc/httpd/conf.d/redirect.conf 配置HTTP跳转HTTPS RewriteRule (.*) https://... [R=301,L] 301重定向

功能作用详解

1.虚拟主机类型对比

类型 标识方式 适用场景 配置核心指令
基于端口 不同端口(如 80/8080) 测试环境多应用隔离 Listen 8080 + <VirtualHost *:8080>
基于IP 不同IP地址 多IP服务器托管独立网站 <VirtualHost 192.168.1.100:80>
基于域名 不同域名(如 site1.com) 单IP多域名网站托管(生产常用) ServerName site1.com

2. 虚拟主机配置要点

bash 复制代码
# 端口虚拟主机示例
Listen 8080
<VirtualHost *:8080>
    DocumentRoot "/var/www/port8080"
    # 必须添加 Listen 指令[1,6](@ref)
</VirtualHost>

# 域名虚拟主机示例
<VirtualHost *:80>
    ServerName site1.com
    DocumentRoot "/var/www/site1"
    # 需确保域名解析到服务器IP[8](@ref)
</VirtualHost>
  • 目录权限控制:
bash 复制代码
<Directory "/var/www/site1">
    Require all granted     # 允许所有访问
    Options -Indexes        # 禁止目录列表[7](@ref)
</Directory>

3. 重定向功能解析

  • 强制HTTPS跳转
apache 复制代码
RewriteEngine On
RewriteCond %{HTTPS} off          # 检测非HTTPS请求
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  • 域名A跳转到域名B
apache 复制代码
RewriteCond %{HTTP_HOST} ^old.com$ [NC]
RewriteRule ^(.*)$ http://new.com/$1 [R=301,L]
相关推荐
emo_2b2 分钟前
Pycharm配置conda解释器时遇到的问题及解决方法
linux·pycharm·conda
极光通讯19 分钟前
服务器内存替代料选型方法论:主料号缺货时如何找到Pin-to-Pin兼容型号
运维·服务器
人生百态,人生如梦34 分钟前
Ubuntu在低版本下使用ccswitch+claudecode(CCSwitch+Docker+Claude)连调教程
linux·ubuntu·docker·claudecode·ccswitch
byte轻骑兵1 小时前
【BlueZ】hciconfig 工具:蓝牙适配器管理实操 + 源码实现基础
linux·bluez·电脑蓝牙·嵌入式蓝牙
SKH.1 小时前
Linux驱动-系统移植
linux·服务器
根目录下的猫1 小时前
虚拟机复制过来运行时:“虚拟机使用的此版本,VMware Workstation 不支持的硬件版本。”错误解决办法,亲测可用
linux·运维·服务器·后端
涉密IT资质笔记1 小时前
2026 涉密资质三类硬性条件对照:军工 / 集成 / 印制参数矩阵与易错点
服务器·线性代数·矩阵·创业创新
yunwei371 小时前
eBPF 入门实践教程十七:编写 eBPF 程序统计随机/顺序磁盘 I/O
linux·后端·性能优化
帷幕落秋1 小时前
内存、虚拟内存与 OOM
linux·运维
dingdingfish2 小时前
TLPI 第41章 读书笔记:Fundamentals of Shared Libraries
linux·static·link·dynamic·library·tlpi