【发布时间】:2013-10-24 22:35:28
【问题描述】:
我知道 nodejs 可以在 80 端口上运行:
- 使用 apache/nginx 设置代理
- 使用 iptables 规则设置端口重定向
- 在应用内的端口 80 上进行快速侦听
第一个选项不是最简单的,并且需要比我需要的更多的依赖项。第二个可以工作,但在我的 OpenVZ VPS 上它不会(而且我无法编译自定义的 linux 内核)。
我也需要处理一些子域,在阅读了stackoverflow answer 之后,我尝试了第三种解决方案。 它运行良好且非常容易执行。
我想知道直接在 80 端口上运行 nodejs 时是否可能存在一些安全问题?我该如何修复/找到这些?
我想使用 pm2 来处理进程,它可能会运行 not as root (Goodbye node-forever hello pm2)。
【问题讨论】:
-
为什么会比其他端口安全?
-
@dystroy:它可能不如通过 nginx 代理安全,以防有人发现 Node 的 HTTP 解析器中的漏洞。
-
@dystroy 好问题,所以使用代理、iptable 或直接在端口 80 上运行它会导致相同的安全问题?
-
如果您的防火墙没有屏蔽原始端口,那是肯定的。如果确实如此并且您使用了代理并且 Node 的 http 解析器中存在被代理掩盖的漏洞,那么此解决方案可能会更快。但我对此表示严重怀疑,在考虑这样的解决方案之前,我需要一个指向该漏洞的链接。