javascript - 对于一个端口上只有一个应用程序的 Node 应用程序,使用代理服务器(例如 node-http-proxy)有什么意义?

标签 javascript node.js proxy node-http-proxy nodejitsu

我正在探索使用 node-http-proxy代理服务器,这样我就可以让我们的代理服务器在端口 80 上将请求转发到我们在端口 8000 上的应用程序服务器。但是,我有点困惑为什么这是一个好主意,以及这个设置究竟能防止什么安全-明智的。

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

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

最佳答案

运行反向代理的原因是:

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

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

关于javascript - 对于一个端口上只有一个应用程序的 Node 应用程序,使用代理服务器(例如 node-http-proxy)有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10677135/

相关文章:

javascript - 如何在 react 中悬停时在图像上添加过渡时间?

javascript - 仅在用户首次登录 Express 框架时显示弹出窗口

java - 自动获取代理

html - 如何将 HTML 分成两个不同的区域,就像使用框架一样?

javascript - 我如何收听 Ractive 中的属性更改

javascript - 在变量中声明一个 JavaScript 函数?

asp.net - 使用子域开发 Web 应用程序

amazon-web-services - AWS Lambda : How do I connect to a service that uses IP whitelisting from AWS Lambda?

javascript - 在 Ember 中,如何在另一个 Controller 中处理从一个 Controller 发送的操作

javascript - 使用 node.js 进行音频处理