我有一个节点/ express / postgres应用程序。我在一个节点上有postgres数据库,我计划在一个单独的负载均衡器后面有几个应用程序节点,所以我可以水平扩展。
我将应用程序节点设置为在节点应用程序前面的每个运行nginx。所以我让nginx监听端口80并将web请求转发到正在侦听端口3000的同一个盒子上的节点应用程序。
然后我计划将HAProxy放在前面以处理跨应用程序节点的SSL终止和负载平衡
我的问题:在这种情况下,nginx是否已过时?将HAProxy转发到端口3000上的应用程序节点会不会更好?
在每个应用程序节点上使用nginx有什么好处吗? 我不会提供任何静态文件。我的节点应用程序是一个仅返回JSON数据的REST API。节点应用程序无法呈现或提供任何HTML。
答案 0 :(得分:2)
在这种情况下,Nginx和HAProxy都具有相同的目的:隔离非战斗强化节点http服务器堆栈(并让我们面对它,你的节点应用本质上是一个像Nginx或Apache这样的http服务器,但是你自己编写)来自通过战斗强化的http服务器进行代理来完成互联网的其余部分。这意味着在这种情况下,在节点前面有两个http代理是多余的。
但是,有时您可能希望这样做。如果您的节点服务器位于计算机集群上并且它们都可以访问互联网并且可以从互联网访问它们,那么您可能希望使用其他http代理(如Nginx或Apache或lighttpd)来保护每台计算机。
通常,您可以使用防火墙保护计算机。但有时将每台机器直接暴露给网络是有意义的。
答案 1 :(得分:1)
我只想使用HAProxy代理应用程序节点。
让Nginx增加另一个潜在的失败点,HAProxy必须对Nginx和node.js进行健康检查,以确保它们健康。