httpd服务器功能演示
-
-
- 一、虚拟主机配置
- 虚拟主机技术全景
-
- 虚拟主机目录规范
- [1. 基于端口的虚拟主机(8080/8081)](#1. 基于端口的虚拟主机(8080/8081))
- [2. 基于IP的虚拟主机(192.168.1.100/192.168.1.101)](#2. 基于IP的虚拟主机(192.168.1.100/192.168.1.101))
- [3. 基于域名的虚拟主机(site1.com/site2.com)](#3. 基于域名的虚拟主机(site1.com/site2.com))
- 二、网页重定向配置
-
- [HTTP 跳转至 HTTPS](#HTTP 跳转至 HTTPS)
- 命令总结表格
- 功能作用详解
- 1.虚拟主机类型对比
- [2. 虚拟主机配置要点](#2. 虚拟主机配置要点)
- [3. 重定向功能解析](#3. 重定向功能解析)
-
一、虚拟主机配置
虚拟主机技术全景
端口号 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]