Node.js + 宝塔面板 404 踩坑
精简记录Node.js+宝塔部署中「域名404」「反向代理后主页404」两大核心坑,附快速解决方案,避开同类问题。
📋 问题背景
- 环境:服务器 + 宝塔面板 + Node.js + PM2 + Nginx
- 需求:域名
xxx.top访问Node接口(/api/goods/query),同时保留原站点主页 - 问题:本地curl正常,域名404;配置反向代理后,接口正常、主页404
🕵️ 踩坑1:本地正常,域名访问404
问题
PM2显示服务在线,本地curl http://127.0.0.1:8080/api/goods/query正常,域名访问接口404。
根因
未配置Nginx反向代理,Nginx未将/api/请求转发至Node服务(8080端口)。
解决方案
宝塔面板添加反向代理,核心配置:
| 配置项 | 填写内容 |
|---|---|
| 代理名称 | node-api |
| 目标URL | http://127.0.0.1:8080 |
| 目录 | /api/ |
(图片:宝塔反向代理配置截图)
🕵️ 踩坑2:反向代理后,主页404
问题
接口正常访问,但域名主页https://xxx.top返回404。
根因
反向代理目录填为/(根目录),所有请求都被转发至Node服务,Node未配置根路由。
解决方案
编辑反向代理,将「目录」改为/api/,仅转发接口请求,不影响主页。
📌 核心避坑点
- 反向代理目录必须填
/api/(带末尾斜杠),避免路由拼接错误。 - PM2「online」≠ 服务正常,需用
lsof -i :8080确认端口监听。 - 排障顺序:先本地curl验证,再配置反向代理,最后测试域名。
✅ 最终效果
https://xxx.top:正常访问原站点主页https://xxx.top/api/goods/query:正常访问接口