我有一个node / express / postgres应用程序.我在一个节点上有postgres db,我计划在一个单独的负载均衡器后面有几个应用程序节点,以便可以水平扩展.
我将应用程序节点设置为在节点应用程序前面的每个运行Nginx.所以我让Nginx在端口80上侦听并将Web请求转发到侦听端口3000的同一盒上的节点应用程序.
然后,我计划将HAProxy放在最前面,以处理应用程序节点之间的SSL终止和负载平衡
我的问题:在这种情况下,Nginx是否已过时?仅将HAProxy转发到端口3000上的应用程序节点会更好吗?
在每个应用程序节点上使用Nginx有什么好处?
我不会提供任何静态文件.我的节点应用程序是一个REST api,仅返回JSON数据.节点应用程序永远不会呈现或提供任何HTML.
最佳答案
在这种情况下,Nginx和HAProxy都达到了相同的目的:将非战斗硬化的节点http服务器堆栈(和它面对面,您的节点应用实质上是像Nginx或Apache一样由您自己编写的HTTP服务器)与其余通过经过艰苦奋战的http服务器进行代理来实现Internet.这意味着在这种情况下,在节点前面有两个http代理是多余的.
但是,在某些情况下,您可能想要这样做.如果您的节点服务器位于计算机群集上,并且它们都可以访问Internet,并且都可以从Internet访问,那么您可能希望使用Nginx或Apache或lighttpd等其他http代理保护每台计算机.
通常,您可以使用防火墙保护计算机.但是有时候将每台机器直接公开到网络是有意义的.