linux - 使用端口 80 (Ubuntu/Linode) 运行 Node.js 时的最佳实践

我正在 cloud Linux Node 上设置我的第一个 Node.js 服务器,我对 Linux admin 的细节还很陌生. (顺便说一句,我没有尝试同时使用 Apache。)

一切都安装正确,但我发现除非我使用 root 登录,否则我无法使用 node 监听 port 80。但是,出于安全原因,我宁愿不以 root 身份运行它。

最佳做法是:

  1. 为 Node 设置良好的权限/用户,使其安全/沙盒化?
  2. 允许在这些限制范围内使用端口 80。
  3. 启动 Node 并自动运行。
  4. 处理发送到控制台的日志信息。
  5. 任何其他一般维护和安全问题。

我应该将端口 80 的流量转发到不同的监听端口吗?

谢谢

最佳答案

80 端口

我在我的云实例上所做的是使用以下命令将端口 80 重定向到端口 3000:

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

然后我在端口 3000 上启动我的 Node.js。对端口 80 的请求将被映射到端口 3000。

您还应该编辑您的 /etc/rc.local 文件并添加该行减去 sudo。这将在机器启动时添加重定向。 /etc/rc.local 中不需要 sudo,因为系统启动时,那里的命令以 root 身份运行。

日志

使用 forever用于启动 Node.js 的模块。它将确保在崩溃时重新启动,并将控制台日志重定向到文件。

开机启动

将您的 Node.js 启动脚本添加到您为端口重定向编辑的文件 /etc/rc.local。这将在系统启动时运行您的 Node.js 启动脚本。

digital ocean 和其他 VPS

这不仅适用于 Linode,也适用于 Digital Ocean、AWS EC2 和其他 VPS 提供商。然而,在基于 RedHat 的系统上,/etc/rc.local/ect/rc.d/local

https://stackoverflow.com/questions/16573668/

相关文章:

python - 初始化 dict : curly brace literals {} or the

python - Pandas 索引列标题或名称

linux - 如何在不运行 Bash 脚本的情况下对其进行语法检查?

python - python多久刷新一次文件?

python - 将 Django 模型对象转换为 dict 并且所有字段都完好无损

python - 检查字符串是否以列表中的一个字符串结尾

python - 在python中获取随机 bool 值?

linux - 如何使用 'cut' 查找最后一个字段

linux - Linux 内核是如何测试的?

shell - 从文件中读取随机行的简单方法是什么?