- 80 端口 → 网站 A
- 8080 端口 → 网站 B
- 8090 端口 → 网站 C
完全独立,互不干扰。
一、核心原理
虚拟主机不只可以按域名区分,还可以按端口区分:
plaintext
<VirtualHost *:端口号>
只要端口不一样,Apache 就会自动对应到不同网站。
二、3 步完成配置(Windows/Linux 通用)
第 1 步:让 Apache 监听新端口
打开 Apache 主配置文件
httpd.conf添加你要使用的端口(默认只监听 80,必须手动加):
apache
# 默认端口
Listen 80
# 新增端口1
Listen 8080
# 新增端口2
Listen 8090
想加几个网站就加几个 Listen 端口。
第 2 步:配置不同端口的虚拟主机(核心)
打开虚拟主机配置文件:
- Windows(XAMPP):
conf/extra/httpd-vhosts.conf - Linux(CentOS):
/etc/httpd/conf.d/vhost.conf - Linux(Ubuntu):
/etc/apache2/sites-available/000-default.conf
直接复制下面配置(改路径即可):
apache
# 网站1:默认 80 端口
<VirtualHost *:80>
DocumentRoot "D:/xampp/htdocs/site1" # 你的网站1目录
ServerName localhost:80
</VirtualHost>
# 网站2:8080 端口
<VirtualHost *:8080>
DocumentRoot "D:/xampp/htdocs/site2" # 你的网站2目录
ServerName localhost:8080
</VirtualHost>
# 网站3:8090 端口
<VirtualHost *:8090>
DocumentRoot "D:/xampp/htdocs/site3" # 你的网站3目录
ServerName localhost:8090
</VirtualHost>
必加权限配置(防止 403 错误)
每个虚拟主机建议加上目录权限:
apache
<Directory "D:/xampp/htdocs/site2">
AllowOverride All
Require all granted
</Directory>
第 3 步:重启 Apache
- Windows:Stop → Start
- Linux:
systemctl restart httpd或systemctl restart apache2
三、测试访问
plaintext
http://localhost → 网站1
http://localhost:8080 → 网站2
http://localhost:8090 → 网站3
能分别打开不同网站 = 配置成功 ✅
四、Linux 必须额外做一步(开放防火墙端口)
否则外部无法访问:
bash
运行
# CentOS 开放 8080、8090
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=8090/tcp
firewall-cmd --reload
# Ubuntu
ufw allow 8080
ufw allow 8090
五、最常见问题
-
新端口无法访问
- 没加
Listen 端口号 - 防火墙没开放
- 云服务器安全组没放行
- 没加
-
所有端口都打开同一个网站
- 虚拟主机配置写错
- 没有为每个端口单独写
<VirtualHost *:端口>
-
403 无权限
- 缺少
<Directory>权限配置
- 缺少
总结
- Listen 端口(告诉 Apache 要监听哪些端口)
- <VirtualHost *: 端口>(每个端口一个站点)
- 重启 Apache
- 防火墙放行端口