首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nodejs、PM2和nginx部署安全?

Nodejs、PM2和nginx部署安全?
EN

Stack Overflow用户
提问于 2015-05-31 19:13:02
回答 1查看 1.3K关注 0票数 2

有一些在线指南展示了如何让nodejs在服务器上运行,但它们往往跳过一些关于安全性的细节。这是个有点麻烦的问题,我不知道从哪里开始。我想知道是否有人能澄清以下细节。

首先,我的设置:

  • 我已经在本地安装了一个非sudo用户的节点,因为使用admin运行节点是个坏主意: /home/appuser x- nodejs/ # node install bin/颇具-包括/颇具/- lib/区上传的文件 通过执行PM2,我可以使用pm2 start app.js运行应用程序。 我的nginx配置: 服务器{侦听80;server_name mydomainname.com;位置/{ proxy_pass http://localhost:8080;proxy_http_version 1.1;proxy_set_header升级$http_upgrade;proxy_set_header连接“升级”;proxy_set_header主机$host;proxy_cache_bypass $http_upgrade;}}

我担心的是:

(1)应用程序-主app/是否应该驻留在/home/appuser

  • 有什么危险,让我的应用程序文件生活在我的非sudo用户的家?如果是的话,我的应用程序文件应该住在哪里?
  • 我想知道public/是否应该位于不同的位置,而不是与应用程序文件位于同一个文件夹中。我不希望应用程序源文件泄漏,特别是我的config.js,它包含一些敏感信息,如我的数据库和电子邮件的详细信息。 如果应该移动它,则/public相对于app/居住的位置
  • 现在,app/上的权限是chown -R appuser:appuser app/,因此用户拥有所有文件。我应该在我的应用程序文件夹上设置其他权限吗?

(2) PM2 --既然我在本地安装了nodejs及其模块,那么在服务器重新启动之后,如何安全地让pm2重新启动nodejs应用程序?

  • 我的理解是,pm2-init.sh将生活在/etc/init.d/中,如果我已经在全局上使用sudo安装了pm2,那么这种情况就会自动发生。 如何让pm2安全地使用我的非sudo用户重新启动我的应用程序?

(3) NGINX

  • 如果像这样为public/服务,我如何通过nginx安全地为它们服务: http://mydomainname.com/public
  • 我的应用程序处理路由,如果找不到路由,应该抛出404。但是,是否有人可以绕过这个问题,恶意地让我的应用程序或nginx浏览其他目录呢? ie,在app目录之外 http://mydomainname.com/../../etc/path/to/secrets 或者,就在我的应用程序中 http://mydomainname.com/public/../../config.js 如果可能的话,是否可以在nginx或nodejs中设置额外的安全防范措施来防止这种情况发生?
EN

回答 1

Stack Overflow用户

发布于 2015-05-31 20:41:34

  1. 我采用的方式是让所有的文件都是node:node-developer。然后在node用户下启动应用程序。其中node是开发人员的一个组。并将所有文件权限设置为770
  2. 编写一个简单的shell脚本,该脚本登录到node用户中,并作为init脚本启动pm2
  3. 通过使用适当的权限设置解决。Nginx在nginx用户下运行。如果文件是公开的,则将其设置为nginx:nginx。甚至用户也可以做public/../../something。Nginx没有进入它的权利。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30561603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档