一、虚拟主机配置
虚拟主机技术全景
虚拟主机目录规范
/var/www/
├── site1.com
│ ├── public_html
│ ├── logs
│ └── cgi-bin
└── site2.com
├── public_html
├── logs
└── tmp
1. 基于端口的虚拟主机(8080/8081)
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
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 ~]
[root@localhost ~]
[root@localhost ~]
2. 基于IP的虚拟主机(192.168.1.100/192.168.1.101)
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
<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 ~]
3. 基于域名的虚拟主机(site1.com/site2.com)
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
<VirtualHost *:80>
ServerName site1.com
DocumentRoot "/var/www/site1"
</VirtualHost>
<VirtualHost *:80>
ServerName site2.com
DocumentRoot "/var/www/site2"
</VirtualHost>
[root@localhost ~]
[root@localhost ~]
二、网页重定向配置
HTTP 跳转至 HTTPS
[root@localhost ~]
LoadModule rewrite_module modules/mod_rewrite.so
[root@localhost ~]
<VirtualHost *:80>
ServerName site1.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
[root@localhost ~]
命令总结表格
演示命令 |
功能描述 |
关键参数/文件 |
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. 虚拟主机配置要点
Listen 8080
<VirtualHost *:8080>
DocumentRoot "/var/www/port8080"
</VirtualHost>
<VirtualHost *:80>
ServerName site1.com
DocumentRoot "/var/www/site1"
</VirtualHost>
<Directory "/var/www/site1">
Require all granted
Options -Indexes
</Directory>
3. 重定向功能解析
RewriteEngine On
RewriteCond %{HTTPS} off # 检测非HTTPS请求
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^old.com$ [NC]
RewriteRule ^(.*)$ http://new.com/$1 [R=301,L]