Apache同时监听多个端口需两步:一是在主配置文件中添加未注释的Listen指令(如Listen 80、Listen 8080),二为每个端口配置对应<VirtualHost *:端口号>块并指定DocumentRoot,最后重启服务并确认防火墙放行。
apache 可以轻松实现同时监听多个端口,关键在于两步:明确声明要监听的端口,再为每个端口配一个对应的 <virtualhost> 块。不需要额外服务或复杂脚本,纯配置即可完成。
在主配置文件中添加多个 Listen 指令
打开 Apache 主配置文件(Ubuntu/Debian 通常是 /etc/apache2/ports.conf,CentOS/RHEL 是 /etc/httpd/conf/httpd.conf),确保有类似以下未被注释的行:
Listen 80Listen 8080Listen 8001
每行一个端口,支持任意合法端口号(1–65535)。避免使用已被其他进程占用的端口,可先用 sudo ss -tuln | grep :端口号 检查。
为每个端口定义独立的 VirtualHost
仅写 Listen 不够,必须有匹配的虚拟主机块,否则请求无法路由。例如:
<VirtualHost *:80> DocumentRoot /var/www/html </VirtualHost><VirtualHost *:8080> DocumentRoot /var/www/site2 </VirtualHost><VirtualHost *:8001> DocumentRoot /var/www/api-dev </VirtualHost>
注意:<VirtualHost> 的端口号必须和 Listen 完全一致;* 表示监听所有 IPv4/IPv6 地址,无需写成 *:8080 以外的形式(如 127.0.0.1:8080 会限制访问范围)。
补充必要配置并重启验证
每个 <VirtualHost> 块内建议包含基本权限控制,比如:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
<Directory /var/www/site2> Require all granted </Directory>- 如有 HTTPS 需求,还需加载
ssl_module并在对应<VirtualHost *:8443>中启用SSLEngine on等指令
保存后重启服务:
- Ubuntu/Debian:
sudo systemctl restart apache2 - CentOS/RHEL:
sudo systemctl restart httpd
运行 sudo ss -tuln | grep -E ':80|:8080|:8001',确认每行都显示 LISTEN 状态。
别忘了系统级放行
即使 Apache 已监听,外部仍可能连不上——检查防火墙和 SELinux:
- Ubuntu:
sudo ufw allow 8080 - CentOS:
sudo firewall-cmd --permanent --add-port=8001/tcp && sudo firewall-cmd --reload - RHEL/CentOS 启用非标准端口(如 8001)时,若报 “Permission denied”,需执行:
sudo semanage port -a -t http_port_t -p tcp 8001
本地开发用 localhost:8080 或 192.168.x.x:8001 即可直接访问对应站点目录。

















