三十二、【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]
相关推荐
Lzc7743 小时前
Linux的多线程
linux·linux的多线程
清风笑烟语3 小时前
Ubuntu 24.04 搭建k8s 1.33.4
linux·ubuntu·kubernetes
Dovis(誓平步青云)4 小时前
《Linux 基础指令实战:新手入门的命令行操作核心教程(第一篇)》
linux·运维·服务器
好名字更能让你们记住我4 小时前
MYSQL数据库初阶 之 MYSQL用户管理
linux·数据库·sql·mysql·adb·数据库开发·数据库架构
半桔4 小时前
【网络编程】TCP 服务器并发编程:多进程、线程池与守护进程实践
linux·服务器·网络·c++·tcp/ip
恣艺5 小时前
Redis有序集合(ZSet):排行榜功能的最优解,原理与实战
数据库·chrome·redis
维尔切5 小时前
Shell 脚本编程:函数
linux·运维·自动化
穷人小水滴5 小时前
胖喵必快 (pmbs): btrfs 自动快照工具 (每分钟快照)
linux·rust
云泽8085 小时前
从ENIAC到Linux:计算机技术与商业模式的协同演进
linux·运维·服务器
wheeldown5 小时前
【Linux】【实战向】Linux 进程替换避坑指南:从理解 bash 阻塞等待,到亲手实现能执行 ls/cd 的 Shell
linux·运维·bash