三十二、【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]
相关推荐
小糖学代码1 天前
LLM系列:1.python入门:3.布尔型对象
linux·开发语言·python
shizhan_cloud1 天前
Shell 函数的知识与实践
linux·运维
Deng8723473481 天前
代码语法检查工具
linux·服务器·windows
云计算老刘1 天前
3.Shell 变量基础知识
chrome·正则表达式·centos·云计算
霍夫曼1 天前
UTC时间与本地时间转换问题
java·linux·服务器·前端·javascript
月熊1 天前
在root无法通过登录界面进去时,通过原本的普通用户qiujian如何把它修改为自己指定的用户名
linux·运维·服务器
大江东去浪淘尽千古风流人物1 天前
【DSP】向量化操作的误差来源分析及其经典解决方案
linux·运维·人工智能·算法·vr·dsp开发·mr
打码人的日常分享1 天前
智慧城市一网统管建设方案,新型城市整体建设方案(PPT)
大数据·运维·服务器·人工智能·信息可视化·智慧城市
赖small强1 天前
【Linux驱动开发】NOR Flash 技术原理与 Linux 系统应用全解析
linux·驱动开发·nor flash·芯片内执行