PM2启动后为什么访问不到我的Node.js服务?

书生シ莉莉 阅读 3

我用PM2部署了一个Express应用,本地运行没问题,但用PM2启动后外网死活访问不了,端口也确认没被占用。

我执行的是 pm2 start app.js,配置文件也没改过,默认监听3000端口。服务器防火墙已经开放了3000端口,但curl localhost:3000都返回空,日志里也没报错。

是不是PM2默认绑定了127.0.0.1?我代码里写的是 app.listen(3000),没指定host,这会有影响吗?

我来解答 赞 0 收藏
二维码
手机扫码查看
1 条解答
技术培聪
你说的对,这确实有点奇怪。通常情况下,app.listen(3000) 默认绑定的是 0.0.0.0,即所有网络接口,而不是 127.0.0.1。不过有时候还是会出现意外情况。

你可以尝试在 app.listen 中显式指定 0.0.0.0 来确保它绑定所有接口:
app.listen(3000, '0.0.0.0', () => {
console.log('Server is running on port 3000');
});


另外,重启一下 PM2 和你的应用,有时候缓存或者之前的配置会有影响:
pm2 restart app

如果这样还是不行,检查下 PM2 的日志,有时候会有隐藏的日志信息:
pm2 logs app

最后,虽然你提到防火墙已经开放了 3000 端口,但也可以再确认一下服务器的安全组设置,确保没有其他规则阻止外部访问。

希望这些步骤能帮到你,性能上没问题的话就更好了。
点赞
2026-03-20 17:24