我在Ubuntu上创建了Digital Ocean Droplet,并以Express Server作为代理安装了Nginx。它还使用Node和React JS。有时,当我早上醒来时,我会注意到我只能在前端应用程序上看到主体背景颜色,而React登录表单没有显示。控制台日志然后显示502 Bad Gateway
。起初,我认为这只是一种罕见的情况,但最近才发生。请理解我对所有这些都非常陌生,所以希望您能理解我的意思。
查看我的Nginx日志,似乎有人试图从我的服务器请求文件:
我不确定这是如何将我的Express服务器离线发送的(我假设是这样做的),但是我确实需要避免这种情况。
有人可以帮助我了解如何避免这种情况发生吗?还是如果这些请求是正常的并且我在错误的位置寻找,如何确定这导致服务器脱机的原因?
非常感谢,感谢您的帮助。
答案 0 :(得分:1)
我不确定如何启动表达应用程序,但如果使用node命令启动它,则可能会在一段时间后崩溃。相反,最好使用pm2或forever
这样的生产工具例如运行:
pm2 start app.js -i max
使用此解决方案,应用将在崩溃时自动重启。我的建议是,将日志添加到您的应用程序上,特别是针对因该原因而使应用程序崩溃的错误,使用Winston
答案 1 :(得分:1)
这不是让您的Express Server退出的原因。
当您看到日志时,每秒只有4/5个请求,并返回194个八位字节的301 HTTP代码(请求似乎没有传输到您的快速应用程序)。 Nginx可以处理更多的事情。
即使这不是主要原因,如果要阻止它(php扩展名),请将其放在您的nginx conf文件中:
location ~ (\.php) {
return 403;
}
要检查您的问题是否来自节点或nginx(我假设nginx在端口80上运行,而节点在端口3000上运行),只需在两者上启动curl请求即可。
curl -X GET -vI http://localhost:9000/myapp => If HTTP code 502 problem comes from your app
curl -X GET -vI http://localhost:80/myapp => If HTTP code 502 and previous request works, your nginx server do a wrong redirection of the request
您的问题可能来自快递应用。路由可能会导致您的应用崩溃,或者您的服务器在一段时间后关闭,导致内存泄漏。
您可以通过向服务器发送上千个请求(此处为100 000,并发5个)来轻松检查内存泄漏:
ab -n 100000 -c 5 http://badasse.com/
在此期间,首先检查节点/ pm2进程使用的内存,它必须保持不变
答案 2 :(得分:1)