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

Phi*_*hil 40 apache reverse-proxy nginx webproxy node.js

在Node.JS前面运行nginx或其他Web服务器作为反向代理有什么好处?它提供什么?

(此问题适用于有关网络应用程序的问题,而不是网页).

谢谢.

小智 34

我认为最大的好处是您可以将相同的端口(80)用于多个应用程序.否则,您需要为每个nodejs应用程序提供一个新的IP地址.根据您的设置方式,您还可以将不同的文件夹和子域配置为在不同端口上运行的不同nodejs应用程序.如果你正在建造一个大的或复杂的东西,这是非常好的.想象一下,能够在一个节点应用程序上运行您的API,从另一个节点应用程序运行您的网站,以及在另一个应用程序中运行登录的网站(会员区域,仪表板等).您的负载均衡器可以确定谁需要去哪里(example.com/api* - > api.js,example.com/dashboard* - > dashboard.js,example.com - > app.js).这不仅对缩放很有用,而且当事情破裂时,并不是一切都会破坏.

对于成熟的事情,呃.Nodejs + forever + node-http-proxy = 很棒.为所有应用程序运行1代理服务器,配置/复杂度最小(失败的可能性较低).然后享受其他一切的乐趣.但是,不要忘记关闭内部端口的防火墙;).

有些人注意到负载平衡,这是真的,是一种好处.但是,负载平衡不是大多数人会从中受益的,因为单个线程,非阻塞nodejs线程可以处理非常大的负载.如果我是你,我真的不会认为这是一个区别.负载平衡很容易在您需要时实现,但在您这样做之前完全无用.

另请注意,如果您使用非节点代理解决方案(nginx,龙卷风等),请确保不要使用阻止的解决方案.Apache块.Nginx没有.您不想丢弃在crummy服务器上首先使用nodejs的最大好处之一.


Dio*_*mes 10

使用更成熟的软件作为代理可以提高安全性和可靠性.Nginx,Apache和其他公司已经针对大量案例进行了测试,并在生产中使用了多年.

您还可以使用这些Web服务器中的功能,否则您必须自己实现或使用node.js模块.像缓存,统计,平衡等.

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

编辑:

  • 并编写可靠的代码.通常,安全问题与您的Web服务器无关,而与您的应用程序无关.因此,如果你编写不安全的代码,它不是nodejs的缺陷,只不过是人们编写错误的PHP时Apache的错误.记住这一点非常重要,也是大多数人出错的地方. (3认同)