我正在cloud Linux node上安装我的第一台Node.js服务器,而我对Linux admin的细节相当陌生.(顺便说一句,我不想同时使用Apache.)

所有东西都安装正确,但我发现,除非我使用root login,否则我无法使用node在port 80上监听.但是,出于安全原因,我不希望将其作为root运行.

最佳实践是什么:

  1. 为 node 设置良好的权限/用户,使其安全/Sandbox ?
  2. 允许在这些限制条件下使用端口80.
  3. 启动 node 并自动运行它.
  4. 处理发送到控制台的日志(log)信息.
  5. 任何其他一般维护和安全问题.

我应该将端口80的流量转发到另一个侦听端口吗?

谢谢

推荐答案

Port 80

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

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

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

你也应该编辑你的/etc/rc.local文件,然后加上那一行减go sudo.这将在机器启动时添加重定向.您不需要sudo//etc/rc.local,因为在系统 bootstrap 时,那里的命令以root的形式运行.

Logs

使用forever模块启动 node .与js合作.它将确保在崩溃时重新启动,并将控制台日志(log)重定向到一个文件.

Launch on Boot

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

Digital Ocean & other VPS

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

Node.js相关问答推荐

在Nest.Js中,如何发送带有表单数据的正文请求并应用正文请求验证.附加的文件是可选的

请求正文未定义

如何使用多个参数完成

即使卷已设置,Docker Nodemon 也不会热重载

Rest-Api动态图像路径和Express除非

遇到 - TypeError:try 使用 Express(Node.js) 从 JSON 文件访问数据时无法读取未定义的属性(读取帖子)

eSignature API 的 NodeJS SDK 是否支持数据流?

如何在 Docker 容器中 SSO 登录 AWS(使用 aws-sdk v3)

在系统启动时启动本地 node 服务器

无服务器部署使用无服务器组合抛出`spawn serverless ENOENT`

NPM 错误:修复upstream 依赖冲突安装 NPM 包(云功能)

Zod 模式中的self 数组

Google Calendar API FreeBusy 外部用户

Mongoose,如何一次更新多个?

NodeJs 过滤掉目录异步

Socket IOFlutter 未连接

使用加密模块的流功能获取文件的哈希(即:没有 hash.update 和 hash.digest)

为什么我们要为 Angular 2.0 安装 Node.js?

用一级 try ... catch 捕获 JavaScript Promise 中的错误

代理(如提琴手)可以与 Node.js 的 ClientRequest 一起使用吗