1

我知道 nodejs 可以通过以下方式在端口 80 上运行:

  • 使用 apache/nginx 设置代理
  • 使用 iptables 规则设置端口重定向
  • 在应用程序内的端口 80 上进行快速侦听

第一个选项不是最简单的,并且需要比我需要的更多的依赖项。第二个可以工作,但在我的 OpenVZ VPS 上它不会(而且我无法编译自定义的 linux 内核)。

我也需要处理一些子域,在阅读了这个stackoverflow 答案后,我尝试了第三种解决方案。它完美地工作并且非常容易执行。

我想知道直接在 80 端口上运行 nodejs 时是否可能存在一些安全问题?我该如何修复/找到这些?

我想使用 pm2 来处理进程,它可能不会以 root 身份运行(Goodbye node-forever hello pm2)。

4

1 回答 1

2

第一个选项不是最简单的,需要更多的依赖项然后我需要

请查看为什么要在框架 Web 服务器前面使用 http 服务器,因为您实际上应该这样做的许多正当理由。

使用 iptables 规则设置端口重定向

这可能比直接让您的节点进程监听端口 80 更好,尽管我还没有看到生产中使用过这种类型的配置。

在应用程序内的端口 80 上进行快速侦听

这在功能上是一个糟糕的选择,因为您没有获得上面链接答案中概述的好处,但是,从严格的安全角度来看,要记住的关键是您不能以 root 身份运行您的节点进程,这将是一个可怕的安全问题。您必须是 root 才能绑定到端口 80,因为这是 unix 的规则,但您可以而且必须在绑定到该端口后立即更改为权限较低的用户。

于 2013-10-16T17:52:58.867 回答