linux - 网络服务器 node.js 作为非 root 用户

标签 linux node.js ubuntu webserver

我是一名 Linux 初学者,拥有一台 Linux Ubuntu 12.04 服务器。我已经安装了 node.js 并创建了一个网络服务器脚本。这工作正常,但它以 root 用户身份运行。

我知道这不好(root 用户和网络服务器 = 不安全)。

如何以非根用户身份运行网络服务器脚本?有人知道很好的详细教程或可以给我一些建议吗?

最佳答案

你有两个选择:

监听80端口

以 root 身份运行,在端口 80 上启动应用程序的 listen(),它们会立即变为非 root 用户。例如,这就是 Apache 所做的。 不推荐,因为这很容易出错,还有很多其他细节(写入日志文件、收听前需要初始化等)。不是 Node 中的标准做法。

监听端口 >=1024*

以非 root 用户身份运行,监听端口 >= 1024(例如:8000 或 8080),并让其他人监听端口 80 并将端口 80 流量中继给您。别人可以是:

  1. 负载均衡器、NAT、代理等(例如,如果您在 EC2 上运行,则可能是 EC2 负载均衡器)

  2. 另一个 http 服务器,例如 Apache httpd 或 ngnix。

有关 ngnix 示例,请参见:Node.js + Nginx - What now?

关于linux - 网络服务器 node.js 作为非 root 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19869841/

相关文章:

javascript - Redis 在某些操作系统上将字符串保存为缓冲区,而不是其他操作系统?

c - GTK+ 如何通过提示请求 super 用户

java - jade.Boot 类未找到 ubuntu10.10

c - Go 语言使用 C 的内部结构

node.js - Node Express 服务器不提供图像文件夹

javascript - 如何在核心 php 应用程序中使用 Node js json Web token 库

javascript - 在Electron中,如何使用 Electron 打包器仅包含特定的node_modules?

linux - 找不到包 'libxml++-2.6'

linux - 从哪里获得 iostream.h

linux - 在日期中包含点的现有日期中添加 1 天