我正在运行具有 2 个服务的 Ubuntu 服务器(DigitalOcean Droplet)。 React(创建 React 应用程序)PORT 3000 中的前端 和 Node.js PORT 8765 中的后端/API 使用 PM2(pm2.keymetrics.io)。
Screenshot of PM2 running 2 services
端口已打开(3000 和 8765)。我查过了。
lsof command showing the open ports
问题:当前端应用(在我的浏览器中)尝试访问后端时,它会返回“503 服务不可用”状态代码。
Screeshot of the browser developer tools showing 503
问题:可能是什么原因?您可以建议任何尝试步骤吗?
注意:它在过去几周内运行良好。 (我曾经从 Bitbucket 中提取新的更改)但是今天我遇到了这个问题。
到目前为止我尝试了什么
- 重新启动服务器。同样的错误。
- 将后端端口从 9000 更改为 8765
- 在新的 AWS EC2 实例中运行相同的代码。那里工作正常。
- 强制监听 IPv4(基于@adel 评论) Screenshot using IPv4
最佳答案
我多次调用后端(使用前端)并使用 Ubuntu 的“top”实用程序观察正在运行的进程。请参见下面的屏幕截图。
我注意到后端 node.js 应用程序进程的进程 ID 是 12225。即使返回“503 服务不可用”,也会重复调用此进程。
事实证明,后端应用程序代码以编程方式返回此状态代码(无论何时发生错误,都使用 try-catch block )
try{
...
}
catch (e) {
res.send(503, ...)
}
我为此苦苦挣扎了几天。希望这会对某人有所帮助。
(发现新问题是为什么特定错误只发生在特定服务器上。它在 EC2 实例上运行良好。我认为这是一个不同的问题。)
关于node.js - 状态码 503 Service Unavailable 可能是什么原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71816924/