Node.JS前面的反向代理的优点

将nginx或其他Web服务器作为Node.JS之前的反向代理运行的优点是什么? 它提供了什么?

(这个问题的目的是关于networking应用程序,而不是网页)。

谢谢。

我认为最大的好处就是你可以使用相同的端口(80)进行多个应用程序。 否则,您需要为每个nodejs应用程序创build一个新的IP地址。 根据您的设置,您还可以将不同的文件夹和子域configuration为运行在不同端口上的不同nodejs应用程序。 如果你正在构build一个大的或复杂的,这是非常好的。 想象一下,能够在一个节点应用程序上运行你的API,在另一个应用程序上运行你的网站,以及login的网站(会员区,仪表板等)。 您的负载平衡器可以确定哪些人需要去哪里(example.com/api* – > api.js,example.com/dashboard* – > dashboard.js,example.com – > app.js)。 这不仅对缩放有用,而且当事情破裂时,并不是所有的事情都会一下子破裂。

对于成熟的事情,呃。 Nodejs + forever + node-http-proxy =惊人的。 运行1代理服务器为您的所有应用程序与最小的configuration/复杂性(较低的失败几率)。 然后与其他一切玩得开心。 不要忘记防火墙closures你的内部端口,但;)

有些人注意到负载平衡,这是真的,是一个好处。 然而,负载平衡并不是大多数人会从中受益的,因为单线程,非阻塞的nodejs线程可以处理相当大的负载。 如果我是你,我真的不会认为这是一个区别。 当你需要的时候,负载平衡很容易实现,但除此之外完全没有用处。

另外请注意,如果您确实使用非节点代理解决scheme(nginx,龙卷风等),请确保不要使用阻止的代理解决scheme。 Apache块。 Nginx没有。 你不想丢弃在一个不起眼的服务器上使用nodejs的最大好处之一。

拥有更成熟的代理软件对于安全性和可靠性来说更好。 Nginx,Apache等已经过多种testing,并在生产中使用了多年。

您也可以使用这些Web服务器的function,否则您将不得不自己实现或使用node.js模块。 像caching,统计,平衡等

另一方面,你将失去node.js的一些function,像websockets(在端口80,你仍然可以使用其他端口),页面缓冲和取决于使用的反向代理的实时function,控制caching和标题。

编辑:

  • NginX现在支持websocket代理和其他可能的代理 。
  • Apache有一个代理websocket的模块。