如何阻止黑客将我的Express Server离线发送?

时间:2018-10-03 08:03:17

标签: node.js reactjs express security nginx

我在Ubuntu上创建了Digital Ocean Droplet,并以Express Server作为代理安装了Nginx。它还使用Node和React JS。有时,当我早上醒来时,我会注意到我只能在前端应用程序上看到主体背景颜色,而React登录表单没有显示。控制台日志然后显示502 Bad Gateway。起初,我认为这只是一种罕见的情况,但最近才发生。请理解我对所有这些都非常陌生,所以希望您能理解我的意思。

查看我的Nginx日志,似乎有人试图从我的服务器请求文件:

enter image description here

我不确定这是如何将我的Express服务器离线发送的(我假设是这样做的),但是我确实需要避免这种情况。

有人可以帮助我了解如何避免这种情况发生吗?还是如果这些请求是正常的并且我在错误的位置寻找,如何确定这导致服务器脱机的原因?

非常感谢,感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

我不确定如何启动表达应用程序,但如果使用node命令启动它,则可能会在一段时间后崩溃。相反,最好使用pm2forever

这样的生产工具

例如运行:

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)

您可能想研究helmetjs

自述文件指出:

  

头盔可通过设置各种HTTP来帮助您保护Express应用程序   标头。