Apache基于端口的虚拟主机关键是监听多个非标准端口(如8080、8081),为每个端口配置独立DocumentRoot、Require all granted权限及专属日志路径,并通过configtest验证后reload生效。

Apache 在 httpd.conf 中配置基于端口的虚拟主机,关键是让服务器监听多个端口,并为每个端口绑定独立的网站目录和访问权限。它不依赖域名或 IP,用户需在浏览器中显式输入端口号(如 http://localhost:8080)才能访问对应站点,适合开发测试、内网管理后台等场景。
1. 添加额外监听端口
打开 httpd.conf(路径通常为 /etc/httpd/conf/httpd.conf 或 /etc/apache2/apache2.conf),在文件开头或已有 Listen 指令附近添加你要使用的非标准端口:
Listen 8080Listen 8081- 若使用其他端口(如 8100),也按同样格式添加
注意:系统默认已监听 80 端口,无需重复添加;但新增端口必须确保未被其他进程占用(可用 lsof -i :8080 检查)。
2. 配置 VirtualHost 块
在 httpd.conf 文件末尾或 conf.d/ 目录下的独立配置文件(如 /etc/httpd/conf.d/port8080.conf)中,写入类似如下内容:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
<VirtualHost *:8080>
DocumentRoot "/var/www/site8080"
ServerName localhost
<Directory "/var/www/site8080">
Require all granted
AllowOverride None
</Directory>
ErrorLog "/var/log/httpd/port8080_error.log"
CustomLog "/var/log/httpd/port8080_access.log" combined
</VirtualHost>
-
*:8080表示监听所有 IP 的 8080 端口;也可写成127.0.0.1:8080限制本地访问 -
DocumentRoot必须是真实存在的目录,且 Apache 进程有读取权限 -
Require all granted是 Apache 2.4+ 的必需访问控制指令,缺省会导致 403 错误 - 建议为每个端口单独配置日志路径,便于排查问题
3. 创建网站目录与测试页
确保目录存在并有可访问内容:
sudo mkdir -p /var/www/site8080 /var/www/site8081echo "<h1>Port 8080 Site</h1>" > /var/www/site8080/index.htmlecho "<h1>Port 8081 Site</h1>" > /var/www/site8081/index.html
Linux 系统还需检查 SELinux 状态(getenforce),若为 enforcing 模式,可临时设为 permissive 测试,或用 chcon -R -t httpd_sys_content_t /var/www/site8080 赋予正确上下文。
4. 启用配置并验证
完成编辑后执行以下步骤:
- 运行
apachectl configtest或apache2ctl configtest检查语法是否正确 - 无报错则执行
systemctl reload httpd(CentOS/RHEL)或systemctl reload apache2(Ubuntu/Debian)生效 - 防火墙放行端口:如 firewalld 执行
firewall-cmd --permanent --add-port=8080/tcp && firewall-cmd --reload - 浏览器访问
http://localhost:8080和http://localhost:8081验证是否显示对应页面

















