HostGator VPS(cPanel+PM2)部署Node.js应用后API无法访问求助
排查步骤
1. 先验证Node.js应用本身在VPS上的可用性
在VPS终端执行:
curl http://localhost:[你的Node应用端口]/[API路径]
比如应用端口为3000、API路径为/api/test,就执行curl http://localhost:3000/api/test。
- 若命令返回正常结果,说明应用本身无问题,问题出在Apache反向代理或cPanel配置;
- 若命令也返回404,说明PM2启动的应用存在异常:
- 执行
pm2 list确认应用处于online状态; - 检查应用入口文件的监听地址是否为
127.0.0.1或localhost; - 排查是否因
NODE_ENV=production环境变量导致路由逻辑变化。
- 执行
2. 检查cPanel生成的反向代理规则(.htaccess)
进入主域名根目录(通常为public_html),查看.htaccess文件,确认包含类似以下的反向代理规则:
RewriteEngine On RewriteRule ^nodejsapp/(.*)$ http://localhost:[你的端口]/$1 [P,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
- 确保
RewriteRule中的端口与Node应用实际监听端口一致; - 规则必须包含
(.*)和$1,才能将/nodejsapp/api这类子路径转发到Node应用的/api路径; - 若规则仅为
^nodejsapp$,则只能匹配/nodejsapp根路径,子路径会返回404。
3. 确认Apache必需模块已启用
在VPS终端执行:
apachectl -M | grep proxy apachectl -M | grep rewrite
需看到proxy_module、proxy_http_module和rewrite_module已启用。若未启用,可在WHM的「Apache Configuration」>「Module Installers」中开启,或手动修改httpd.conf添加模块加载指令。
4. 核对cPanel Application Manager的配置细节
- 确认「Application Root」指向包含
package.json的Node项目根目录; - 确认「Application URL」设置为
/nodejsapp,与访问路径一致; - 确认「Startup Command」为正确的入口启动命令,比如
node server.js或npm start(需保证package.json的start脚本正确); - 检查「Environment Variables」是否存在影响路由的冲突配置。
5. 检查端口访问权限
VPS防火墙可能限制Apache访问Node应用端口,执行:
iptables -L -n | grep [你的Node端口]
若无允许本地访问的规则,可临时添加:
iptables -A INPUT -p tcp -s 127.0.0.1 --dport [你的端口] -j ACCEPT
6. 重启服务并清理缓存
- 重启Apache:
systemctl restart httpd - 重启PM2应用:
pm2 restart [应用名称] - 使用浏览器无痕模式访问测试,避免缓存影响。
内容的提问来源于stack exchange,提问作者David Alvidrez Pacheco
相关产品推荐
相关产品推荐

