在XAMPP的默认配置中,Apache通常只监听80端口,且一个域名默认只能对应一个服务端口。但实际开发中,我们可能需要用一个自定义域名绑定多个不同端口,分别运行不同的项目,比如8080端口跑前端项目,8081端口跑后端接口服务。下面我们就一步步完成这个配置。

前置准备
首先确保你已经安装好了XAMPP,并且Apache服务可以正常启动。本文以Windows系统下的XAMPP为例,其他系统操作逻辑基本一致,只是文件路径略有不同。
第一步:修改Apache监听端口
Apache默认只监听80端口,我们需要先添加需要绑定的额外端口。找到XAMPP安装目录下的httpd.conf文件,默认路径是C:xamppapacheconfhttpd.conf。
打开该文件,搜索Listen 80,在下方添加你需要监听的端口,比如我们要添加8080和8081端口,就添加如下内容:
# 监听80端口(默认已有) Listen 80 # 新增监听8080端口 Listen 8080 # 新增监听8081端口 Listen 8081
保存文件后,先不要重启Apache,我们继续配置虚拟主机。
第二步:配置虚拟主机规则
接下来需要配置虚拟主机,让不同端口对应不同的项目目录。找到XAMPP安装目录下的httpd-vhosts.conf文件,默认路径是C:xamppapacheconfextrahttpd-vhosts.conf。
打开该文件,在末尾添加如下虚拟主机配置,假设我们的自定义域名是local.test.com,80端口对应项目目录C:xampphtdocsproject1,8080端口对应C:xampphtdocsproject2,8081端口对应C:xampphtdocsproject3:
# 80端口虚拟主机配置
<VirtualHost *:80>
# 绑定的域名
ServerName local.test.com
# 项目根目录
DocumentRoot "C:/xampp/htdocs/project1"
# 目录权限配置
<Directory "C:/xampp/htdocs/project1">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# 8080端口虚拟主机配置
<VirtualHost *:8080>
ServerName local.test.com
DocumentRoot "C:/xampp/htdocs/project2"
<Directory "C:/xampp/htdocs/project2">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# 8081端口虚拟主机配置
<VirtualHost *:8081>
ServerName local.test.com
DocumentRoot "C:/xampp/htdocs/project3"
<Directory "C:/xampp/htdocs/project3">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
注意路径中的斜杠要使用正斜杠/,不要使用反斜杠,否则可能会出现路径识别错误。
第三步:修改本地hosts文件
我们需要把自定义域名local.test.com指向本地回环地址127.0.0.1,这样浏览器访问该域名时才会走到本地XAMPP的Apache服务。
Windows系统的hosts文件路径是C:WindowsSystem32driversetchosts,右键用管理员权限打开记事本编辑该文件,在末尾添加如下内容:
127.0.0.1 local.test.com
保存文件即可,如果提示没有权限保存,需要确认你是用管理员身份打开的记事本。
第四步:重启服务并验证
回到XAMPP控制面板,先停止Apache服务,再重新启动。如果启动失败,检查前面的配置文件是否有语法错误,比如括号是否配对、路径是否正确。
启动成功后,打开浏览器分别访问以下地址,验证配置是否生效:
http://local.test.com:应该显示project1目录下的内容http://local.test.com:8080:应该显示project2目录下的内容http://local.test.com:8081:应该显示project3目录下的内容
常见问题解决
端口被占用导致Apache启动失败
如果添加端口后Apache无法启动,可能是端口已经被其他程序占用。可以打开命令提示符,执行netstat -ano | findstr "8080"查看8080端口是否被占用,如果被占用可以更换其他未被占用的端口,重新修改httpd.conf和httpd-vhosts.conf中的端口配置即可。
访问域名提示403禁止访问
这种情况通常是目录权限配置有问题,检查httpd-vhosts.conf中对应虚拟主机的<Directory>配置,确保Require all granted已经添加,并且目录路径和实际项目路径一致。
修改hosts文件不生效
修改hosts文件后,可以打开命令提示符执行ipconfig /flushdns刷新本地DNS缓存,之后再尝试访问域名。