我应该同时使用 Nginx 和 HAProxy 作为生产节点应用程序吗?
Should I use both Nginx AND HAProxy for production node app?
我有一个 node/express/postgres 应用程序。我在一个节点上有 postgres 数据库,我计划在一个单独的负载平衡器后面有几个应用程序节点,这样我就可以水平扩展。
我将我的应用程序节点设置为节点应用程序前面的每个 运行 nginx。所以我让 nginx 侦听端口 80 并将 Web 请求转发到侦听端口 3000 的同一个盒子上的节点应用程序。
然后我打算把 HAProxy 放在前面来处理跨应用程序节点的 SSL 终止和负载平衡
我的问题:nginx 在这种情况下是否已过时?只让 HAProxy 转发到端口 3000 上的应用程序节点会更好吗?
在每个应用程序节点上安装 nginx 有什么好处吗?
我不会提供任何静态文件。我的节点应用程序是一个 REST api,只有 returns JSON 数据。节点应用程序不会呈现或提供任何 html.
我只会使用 HAProxy 来代理到应用程序节点。
使用 Nginx 会增加另一个潜在的故障点,HAProxy 必须对 Nginx 和 node.js 进行健康检查以确保它们健康。
在这种情况下,Nginx 和 HAProxy 都有相同的目的:隔离非战斗硬化节点 http 服务器堆栈(让我们面对现实吧,您的节点应用程序本质上是一个像 Nginx 或 Apache 但由您自己编写的 http 服务器)通过久经考验的 http 服务器进行代理,从互联网的其余部分访问。这意味着在这种情况下,在节点前面有两个 http 代理是多余的。
但是,在某些情况下您可能想要这样做。如果您的节点服务器位于机器集群上并且它们都可以访问互联网并且都可以从互联网访问它们,那么您可能希望使用另一个 http 代理(如 Nginx 或 Apache 或 lighttpd)来保护每台机器。
不过一般来说,您可以使用防火墙来保护计算机。但有时将每台机器直接暴露在网络上是有意义的。
我有一个 node/express/postgres 应用程序。我在一个节点上有 postgres 数据库,我计划在一个单独的负载平衡器后面有几个应用程序节点,这样我就可以水平扩展。
我将我的应用程序节点设置为节点应用程序前面的每个 运行 nginx。所以我让 nginx 侦听端口 80 并将 Web 请求转发到侦听端口 3000 的同一个盒子上的节点应用程序。
然后我打算把 HAProxy 放在前面来处理跨应用程序节点的 SSL 终止和负载平衡
我的问题:nginx 在这种情况下是否已过时?只让 HAProxy 转发到端口 3000 上的应用程序节点会更好吗?
在每个应用程序节点上安装 nginx 有什么好处吗? 我不会提供任何静态文件。我的节点应用程序是一个 REST api,只有 returns JSON 数据。节点应用程序不会呈现或提供任何 html.
我只会使用 HAProxy 来代理到应用程序节点。
使用 Nginx 会增加另一个潜在的故障点,HAProxy 必须对 Nginx 和 node.js 进行健康检查以确保它们健康。
在这种情况下,Nginx 和 HAProxy 都有相同的目的:隔离非战斗硬化节点 http 服务器堆栈(让我们面对现实吧,您的节点应用程序本质上是一个像 Nginx 或 Apache 但由您自己编写的 http 服务器)通过久经考验的 http 服务器进行代理,从互联网的其余部分访问。这意味着在这种情况下,在节点前面有两个 http 代理是多余的。
但是,在某些情况下您可能想要这样做。如果您的节点服务器位于机器集群上并且它们都可以访问互联网并且都可以从互联网访问它们,那么您可能希望使用另一个 http 代理(如 Nginx 或 Apache 或 lighttpd)来保护每台机器。
不过一般来说,您可以使用防火墙来保护计算机。但有时将每台机器直接暴露在网络上是有意义的。