Apache可在Linux上通过监听多端口并配置独立虚拟主机实现单服务器多站点,需先在ports.conf或httpd.conf中添加Listen指令声明端口,再为各端口创建对应VirtualHost区块指定DocumentRoot和Directory权限,最后创建目录、放测试页、重载服务并开放防火墙端口。

在 Linux 上让 Apache 同时监听多个端口并为每个端口提供独立网站,关键在于两步:一是告诉 Apache “要听哪些端口”,二是告诉它“每个端口该展示哪个目录、允许谁访问”。整个过程不依赖域名,适合内网调试、后台系统隔离或本地多项目并行开发。
一、添加要监听的端口
Apache 默认只监听 80 端口。要启用其他端口(比如 8000、8080、9000),必须在主监听配置中显式声明:
- 编辑配置文件:/etc/apache2/ports.conf(Ubuntu/Debian)或 /etc/httpd/conf/httpd.conf(CentOS/RHEL)
- 找到已有 Listen 80 行,在其下方新增需要的端口,例如:
Listen 8000
Listen 8080
Listen 9000 - 保存后无需重启,但后续配置生效前需重载服务
二、为每个端口配置独立虚拟主机
每个端口对应一个 <VirtualHost *:端口号> 区块,需明确指定文档根目录和访问权限:
- 推荐将配置写在 /etc/apache2/sites-available/ 下单独文件(如 site1.conf),再用
a2ensite site1.conf启用 - 示例(监听 8000 端口):
<VirtualHost *:8000><br> DocumentRoot /var/www/site1<br> <Directory /var/www/site1><br> Require all granted<br> </Directory><br> </VirtualHost> - Apache 2.4+ 必须包含
<Directory>块并设置Require all granted,否则返回 403 错误 - 不同端口的
DocumentRoot路径不能相同,避免内容混用
三、创建站点目录并放测试页
确保每个虚拟主机指向的目录真实存在且有可读内容:
- 新建目录:
sudo mkdir -p /var/www/site1 /var/www/site2 - 写入简单页面:
echo "<h1>Site 1 on port 8000</h1>" | sudo tee /var/www/site1/index.htmlecho "<h1>Site 2 on port 8080</h1>" | sudo tee /var/www/site2/index.html - 确认目录权限可被 Apache 用户(通常是 www-data 或 apache)读取
四、启用配置并开放防火墙
完成配置后,还需让系统真正生效:
- 检查语法是否正确:
sudo apache2ctl configtest(Ubuntu/Debian)或sudo httpd -t(CentOS/RHEL) - 重载服务:
sudo systemctl reload apache2或sudo systemctl reload httpd - 开放对应端口的防火墙规则:
Ubuntu(UFW):sudo ufw allow 8000/tcp
CentOS(firewalld):sudo firewall-cmd --add-port=8000/tcp --permanent && sudo firewall-cmd --reload - 访问测试:
http://localhost:8000和http://服务器IP:8080


















