6

我正在探索使用node-http-proxy代理服务器,以便我可以让端口 80 上的代理服务器将请求转发到端口 8000 上的应用服务器。但是,我有点困惑为什么这是一个好主意,以及这种设置究竟会在安全方面提供什么保护。

note-http-proxy 文档讨论了很多关于将其用作将请求转发到具有多个端口或 IP 地址的应用程序的方法。这显然会非常有用,特别是对于基本的循环负载均衡器策略。但是,我们在一个端口上只有一个应用程序,所以我们没有必要这样做。

如果我们应该使用这个代理服务器有一个重要的安全原因,那么我很想知道它可以防止哪些类型的攻击。此外,我们使用的是 socket.io,所以如果代理可以帮助 websocket 服务器扩展,我也想了解这一点。我们很难弄清楚如何在没有的情况下运行我们的应用程序sudo(因为低于 1024 的所有端口都需要 root 访问权限),所以如果此时确实没有充分的理由使用代理服务器,我们就放弃了。如果有人知道如何在没有 root 访问权限的情况下在端口 80 上使用代理服务器运行此应用程序,那也将非常有帮助。谢谢!

4

3 回答 3

3

运行反向代理的原因是:

  • 您打开的 IP 端口有限,需要运行许多 Node 服务,每个服务都需要自己的端口
  • 您的后端服务不支持 HTTPS,但您需要它(例如 Derby)
  • 向请求中添加一些后端无法轻松完成的其他功能,例如添加基本身份验证或某种形式的常见日志记录/审计
  • 强制对多个后端服务中常见的传出响应进行添加或更改
  • 提供负载均衡服务

除非您的需求非常简单,否则最好使用HAproxy等专用代理,因为 node-http-proxy 相当简单。

于 2012-05-22T11:51:28.663 回答
1

好吧,如果您只运行一个服务器实例,那么就没有真正的理由。node-http-proxy 文档提到在多个应用程序中使用单个 SSL 证书,这是很有可能的。您还可以跨多个 HTTP 和 Web 套接字服务器进行负载平衡(例如,运行 10 个 socket.io 服务器来获取实时数据,但只运行 1 个 HTTP 服务器来提供资产和 REST API)。当然,在一个实例中,这些不会提供任何好处。

如果您想在没有 sudo 的情况下运行节点服务器,也许您可​​以尝试设置 IP 表端口转发从端口 80 到高于 1024 的端口。请参阅我可以以低权限运行 Node.JS 吗?

于 2012-05-21T00:47:47.237 回答
1

我们主要使用 http-proxy 在单个 IP 后面拥有多个后端服务器,但我们也使用它来将 https 转发到 http。它增强了我们的应用程序。

安全方面,您可能对 http-proxy 的质量比对您的应用程序更有信心。nodejitsu 构建的代理已准备好投入生产,攻击者应该更难在 http-proxy 而不是您自己的应用程序上获得特权(例如读取私钥文件)(当然这取决于您的安全开发技能和您的信任在开源 http-proxy 项目中)。

于 2012-05-21T08:03:42.173 回答