Next.js应用部署到CyberPanel后出现404问题求助
解决Next.js部署到CyberPanel(非默认3000端口)后404的问题
核心排查与修复步骤
1. 确认pm2运行的应用端口正确性
- 执行命令
pm2 list,检查目标应用状态为online,同时确认启动命令里的端口参数(比如next start -p 8080这类指定自定义端口的命令) - 执行
lsof -i :自定义端口(例:lsof -i :8080),验证该端口是否被Next.js进程占用,排除端口冲突情况
2. 修正CyberPanel反向代理配置
CyberPanel默认转发请求到3000端口,需手动修改对应规则:
- 登录CyberPanel,进入目标网站的
Website > Manage > Reverse Proxy页面 - 删除原有指向3000端口的代理规则
- 添加新规则:
- Path 填写
/ - Destination 填写
http://127.0.0.1:你的自定义端口(例:http://127.0.0.1:8080) - 勾选
Enable WebSocket Support(适配Next.js部分功能需求)
- Path 填写
- 保存配置后,执行命令
systemctl restart nginx重启nginx服务
3. 确保Next.js生产构建完整
- 必须在项目根目录执行
npm run build,确认无构建错误 - pm2启动命令需用
next start,禁止使用开发模式的npm run dev,避免端口监听或环境适配问题
4. 检查防火墙端口放行
如果服务器启用防火墙(如ufw、firewalld),需允许本地回环访问自定义端口:
- ufw环境:执行
sudo ufw allow in from 127.0.0.1 to any port 你的自定义端口 - firewalld环境:执行
sudo firewall-cmd --add-port=你的自定义端口/tcp --permanent,再执行firewall-cmd --reload
5. 查看日志定位问题
若以上步骤无效,通过日志排查细节:
- Next.js应用日志:执行
pm2 logs 你的应用名称 - Nginx日志:在CyberPanel的
Website > Manage > Logs查看,或直接访问服务器文件/var/log/nginx/你的域名.access.log、/var/log/nginx/你的域名.error.log
内容的提问来源于stack exchange,提问作者HTXwojtek
相关产品推荐
相关产品推荐

