在本地开发场景中,我们常常需要同时运行多个Web应用,默认的80端口只能绑定一个应用根目录,无法满足多应用并行访问的需求。通过XAMPP配置多端口,我们可以让Apache服务同时监听多个端口,每个端口对应不同的应用目录,从而模拟出本地多应用网关的效果,方便多项目并行开发和调试。

配置前的准备工作
首先需要确保XAMPP已经正常安装,并且Apache服务处于可启动状态。如果之前修改过Apache的默认配置,建议先备份原有的配置文件,避免出现配置错误后无法恢复的情况。本次配置主要涉及两个核心配置文件,分别是Apache的httpd.conf和httpd-vhosts.conf,这两个文件都位于XAMPP安装目录下的apache/conf文件夹中。
修改httpd.conf开启端口监听
首先打开httpd.conf文件,找到默认的端口监听配置项,默认情况下会看到如下配置:
# 默认监听80端口 Listen 80
如果要新增端口,只需要在原有Listen配置下方添加新的监听端口即可,比如我们要新增8081和8082两个端口,就添加如下配置:
# 新增监听端口 Listen 8081 Listen 8082
添加完成后保存文件,注意不要删除原有的80端口监听配置,否则默认的本地访问会失效。接下来需要确认httpd-vhosts.conf虚拟主机配置文件是否被引入,在httpd.conf中搜索httpd-vhosts.conf,找到如下配置项:
# 虚拟主机配置引入,去掉前面的#开启 # Include conf/extra/httpd-vhosts.conf
去掉该行前面的#号,保存httpd.conf文件。
配置虚拟主机绑定端口和应用目录
打开apache/conf/extra目录下的httpd-vhosts.conf文件,在文件末尾添加对应端口的虚拟主机配置。每个端口对应一个<VirtualHost>配置块,结构如下:
# 80端口对应应用1
<VirtualHost *:80>
# 服务器名称,本地可以自定义
ServerName localhost
# 应用根目录,替换为实际的应用路径
DocumentRoot "D:/xampp/htdocs/app1"
# 目录权限配置
<Directory "D:/xampp/htdocs/app1">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# 8081端口对应应用2
<VirtualHost *:8081>
ServerName localhost
DocumentRoot "D:/xampp/htdocs/app2"
<Directory "D:/xampp/htdocs/app2">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# 8082端口对应应用3
<VirtualHost *:8082>
ServerName localhost
DocumentRoot "D:/xampp/htdocs/app3"
<Directory "D:/xampp/htdocs/app3">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
配置中的DocumentRoot需要替换为你本地实际的应用目录路径,<Directory>中的路径需要和DocumentRoot保持一致。如果有更多应用需要绑定,只需要按照同样的格式添加新的<VirtualHost>配置块,修改对应的端口和目录即可。
验证配置是否生效
配置完成后,重启XAMPP中的Apache服务,让配置生效。然后在对应的应用目录中创建简单的测试文件,比如在app1目录创建index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>应用1测试</title>
</head>
<body>
<h1>这是运行在80端口的应用1</h1>
</body>
</html>
在app2目录创建index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>应用2测试</title>
</head>
<body>
<h1>这是运行在8081端口的应用2</h1>
</body>
</html>
打开浏览器,分别访问http://localhost、http://localhost:8081、http://localhost:8082,如果能够看到对应应用的测试页面,说明多端口配置成功,本地多应用网关模拟已经完成。
常见问题排查
- 如果Apache服务重启失败,检查
httpd.conf和httpd-vhosts.conf的语法是否有误,比如括号是否配对、路径是否正确。 - 如果访问端口提示无法连接,检查端口是否被其他程序占用,可以在命令行使用
netstat -ano | findstr 端口号查看端口占用情况,如果被占用可以更换其他未被占用的端口。 - 如果访问页面提示权限不足,检查
<Directory>配置中的路径是否正确,以及Require all granted是否已经添加。
注意:如果本地防火墙开启了端口拦截,需要把新增的端口添加到防火墙允许规则中,否则外部设备可能无法访问本地这些端口的应用。