在同一台开发机上同时调试官网、管理后台和接口服务时,XAMPP默认只使用80端口,局域网里的同事或测试手机想要访问这些项目往往要反复修改配置。更直观的做法是给每个项目分配独立端口,例如8081访问官网、8082访问后台、8083访问API。只要Apache同时监听这些端口,并为每个端口绑定不同的站点目录,局域网设备输入IP加端口就能直达对应项目,既不需要修改hosts文件,也不影响默认的localhost访问。本文围绕XAMPP在局域网内通过不同端口访问本地站点的实现方法展开,涵盖Listen指令、基于端口的虚拟主机配置、防火墙放行以及端口冲突排查。

一、让Apache监听多个端口
Apache能否接收某个端口的请求,取决于配置文件中有没有对应的Listen指令。XAMPP安装后,Apache的主配置文件通常位于D:\xampp\apache\conf\httpd.conf,里面默认包含Listen 80这一行。如果希望增加8081、8082等端口,需要在这个文件中添加多行Listen配置。
Listen是全局指令,可以出现多次。默认情况下它不绑定具体IP,表示对所有网卡生效。比如下面的配置会让Apache同时监听80、8081和8082三个端口:
Listen 80 Listen 8081 Listen 8082
修改之前建议先复制一份httpd.conf作为备份。修改完成后必须重启Apache,因为Apache只在启动时读取配置文件。配合XAMPP控制面板的Stop和Start按钮即可完成重启。注意不要把端口设置成已经被其他服务占用的端口,例如3306通常属于MySQL,21属于FTP,3389属于远程桌面。建议把自定义站点端口规划在8000到8999之间,减少与系统常用服务冲突的概率。
二、用虚拟主机把端口映射到不同目录
仅仅添加Listen指令还不够。Apache默认的DocumentRoot指向D:\xampp\htdocs,如果没有进一步的虚拟主机配置,所有端口返回的都是同一个站点目录。要让8081访问后台系统、8082访问接口服务,就必须在虚拟主机配置文件中为每个端口建立独立的VirtualHost块。
首先确认主配置文件httpd.conf中加载虚拟主机配置的Include语句已经启用。找到下面这行,如果行首有#号,需要去掉#号:
# Virtual hosts Include conf/extra/httpd-vhosts.conf
接下来打开D:\xampp\apache\conf\extra\httpd-vhosts.conf,添加基于端口的虚拟主机。Apache 2.4版本不需要NameVirtualHost指令,直接使用端口不同的VirtualHost块即可。下面是一个可参考的配置,分别将8081和8082映射到两个不同项目目录:
<VirtualHost *:8081>
DocumentRoot "D:\xampp\htdocs\site_admin"
ServerName localhost
<Directory "D:\xampp\htdocs\site_admin">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:8082>
DocumentRoot "D:\xampp\htdocs\site_api"
ServerName localhost
<Directory "D:\xampp\htdocs\site_api">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
每个VirtualHost中的端口必须与前面Listen的端口一一对应。如果某个端口没有Listen,Apache启动时可能因为虚拟主机指向不存在的端口而报错。DocumentRoot要填写项目实际路径,目录不存在也会导致启动失败或访问404。Directory块中的Require all granted用于允许Apache 2.4及以上版本访问该目录,如果缺少这行,局域网访问时可能出现403 Forbidden。
配置多个端口时,ServerName可以保持localhost,因为端口已经足够区分虚拟主机。也可以写成不同名称,但要确保局域网请求能匹配到对应主机。如果访问时发现总是命中第一个虚拟主机,多数是因为请求端口没有匹配到任何VirtualHost,或者端口与VirtualHost声明不一致。
三、放行防火墙并完成局域网验证
Apache本身监听多个端口后,本机通过127.0.0.1:8081访问通常不会遇到防火墙问题。但局域网中的其他设备要访问这些端口,Windows防火墙必须放行对应端口的入站连接。可以在控制面板的Windows Defender防火墙中新建入站规则,也可以使用命令行快速添加。下面命令以管理员身份运行,放行8081端口的TCP入站流量:
netsh advfirewall firewall add rule name="Apache 8081" dir=in action=allow protocol=TCP localport=8081
如果项目有多个端口,需要逐个添加规则,或者用端口范围一次放行,例如localport=8081-8089。之后在本机测试时可以先访问127.0.0.1:8081,确认服务已经正常返回页面;再使用本机局域网IP访问,例如http://192.168.1.10:8081/。如果本机通过局域网IP可以打开,而手机或同事仍然无法访问,通常要检查网络隔离、路由器AP隔离以及防火墙规则是否只对专用网络生效。
查看本机局域网IP可以使用ipconfig命令,在命令行中执行:
ipconfig
找到以太网适配器或无线局域网适配器下的IPv4地址,例如192.168.1.10。局域网内其他设备访问时使用http://192.168.1.10:8081/这一格式。端口号前面的冒号不要省略,路径末尾的斜杠可有可无,但带上更规范。
四、端口冲突排查与配置测试
添加Listen后如果Apache无法启动,最常见的原因是端口被占用或配置文件语法错误。可以先用命令查看某个端口是否已经被其他进程监听:
netstat -ano | findstr :8081
如果返回结果包含LISTENING以及对应的PID,说明端口已经被占用。可以使用任务管理器根据PID查看进程名称,或者直接更换一个空闲端口。修改端口后需要同步修改Listen和对应的VirtualHost声明。Apache的错误日志位于D:\xampp\apache\logs\error.log,启动失败时可以查看日志中的具体提示。
在重启Apache前,建议先运行配置语法检查。XAMPP的Apache执行文件位于D:\xampp\apache\bin\httpd.exe,在命令行中执行:
D:\xampp\apache\bin\httpd.exe -t
如果返回Syntax OK,说明配置没有明显语法问题,可以放心重启。如果提示端口重叠或VirtualHost配置错误,需要回到httpd-vhosts.conf中检查是否每个端口都有唯一且明确的主机块。
从长远看,建议为自己的端口规划建立简单记录。比如80保留给默认站点,8081到8089分配给前端页面,8090到8099分配给接口服务。这样团队成员只需记住IP加端口,就能快速访问对应项目。调试结束后如果不再需要局域网访问,可以删除防火墙规则,或将Listen改为仅监听本机地址,例如Listen 127.0.0.1:8081,但此时VirtualHost也要改成对应的地址形式。
XAMPP局域网访问Apache虚拟主机端口访问修改时间:2026-08-27 19:36:13