【发布时间】:2019-03-14 00:52:14
【问题描述】:
我有一个安装了 Nginx 的网站作为 ExpressJS 服务器的保留代理(端口 3001 的代理)。这将 Node 和 ReactJS 用于我的前端应用程序。
目前这只是一个测试网站,不为任何用户所知或使用。我已经将它安装在带有 Ubuntu 的 Digital Ocean Droplet 上。
每天早上醒来时,我都会加载我的网站并查看502 Bad Gateway。问题是,我不知道如何找出这是怎么发生的。我安装了 PM2,它应该会自动重新启动我的 ExpressJS 服务器,但它没有这样做,当我运行 pm2 list 时,我的应用程序仍然显示 online:
当我运行 pm2 logs 时,我收到以下错误(我以管理员身份运行):
所以我将运行pm2 restart all 来重新启动应用程序,但是我没有看到任何崩溃信息。然而,在这次截屏时,有几个不寻常的请求。 /robots.txt、/sitemap.xml 和 /.well-known/security.txt,但没有任何迹象表明崩溃:
当我查看我的 Nginx error.log 文件时,我只能看到以下内容:
然而,我的 access.log ([09/Oct/2018:06:33:19 +0000]) 中有一些模糊的东西,但我不知道这意味着什么:
如果我在服务器离线时运行curl localhost:3001,我将收到一条连接错误消息。在我运行pm2 restart all 后,这工作正常。
我完全坚持这一点,即使是最小的帮助也将不胜感激,即使只是告诉我我完全错误地吠叫并需要寻找其他地方 - 谢谢。
【问题讨论】:
-
查看 Digital Ocean 监控仪表板,您是否看到 CPU/Mem 的任何峰值?
-
早上 6 点的高峰可能是巨大的 http 请求的结果,正如您从访问日志中看到的那样。你的 Ubuntu 上是否安装了任何额外的安全措施?喜欢 selinux?
-
您的 node.js 应用程序出现问题。它很可能被记录在 pm2 日志中。感谢您使用比当前共享的最后 15 行更长的 pm2 日志内容更新问题。您可能想要使用
--lines标志,例如pm2 logs --lines 1000. -
更新node.js应用所在目录下的用户/权限,让运行它的用户获得写权限。这将允许写入 npm-debug.log 文件,并可能为您提供有关问题所在的更多信息。
-
可能在你的 node.js 项目的根目录中。
标签: node.js reactjs express nginx