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

一、虚拟主机配置

虚拟主机技术全景

端口号
IP地址
域名
客户端请求
识别方式
基于端口的虚拟主机
基于IP的虚拟主机
基于域名的虚拟主机
响应8080/8081端口请求
响应不同IP的请求
响应不同域名的请求
虚拟主机目录规范
/var/www/
├── site1.com
│   ├── public_html    # 网站根目录
│   ├── logs            # 专属日志
│   └── cgi-bin         # CGI脚本
└── site2.com
    ├── public_html
    ├── logs
    └── tmp             # 临时文件
1. 基于端口的虚拟主机(8080/8081)
# 创建网站目录
[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)
# 添加临时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)
# 创建网站目录
[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
# 启用重写模块
[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跳转HTTPSRewriteRule (.*) 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. 虚拟主机配置要点

# 端口虚拟主机示例
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>
  • 目录权限控制:
<Directory "/var/www/site1">
    Require all granted     # 允许所有访问
    Options -Indexes        # 禁止目录列表[7](@ref)
</Directory>

3. 重定向功能解析

  • 强制HTTPS跳转
RewriteEngine On
RewriteCond %{HTTPS} off          # 检测非HTTPS请求
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  • 域名A跳转到域名B
RewriteCond %{HTTP_HOST} ^old.com$ [NC]
RewriteRule ^(.*)$ http://new.com/$1 [R=301,L]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱听雨的少年

感谢老板支持,早日成为技术大牛

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值