部署 nginx 的最佳实践

best practices for deploying nginx

我完全不了解云,我想使用 nodeMongoDBredis 部署我的应用程序。所有这些部分都变成了一个 docker 容器并且可以很好地协同工作。 现在我想设置 nginx。我想知道部署负载均衡器的最佳做法是什么?我应该 运行 nginx 作为 docker 容器吗?或者只是在系统级别安装它?

如果您运行将堆栈的其他组件安装在容器上,那么 运行 nginx 作为容器也是有意义的。 但这取决于您的环境,可用的工具。您可以轻松地在 kubernetes 以及 docker swram 或您选择的任何其他工具上扩展 nginx。

理想情况下,您需要 运行 将每个组件放在一个单独的容器中,以便您可以独立地管理和扩展它们并排除故障。

在您的 docker 网络中嵌入 nginx 是一个非常好的主意。作为 docker 容器,在 docker 网络中,它可以通过它们的 service/container 名称连接到其他容器,而您将仅在 nginx 服务上定义端口转发规则。

例如:

docker network create --driver overlay --attachable demo
docker run -d -p 80:80 --network demo --name nginx nginx
docker run -it --network demo --name alpine alpine

您的 shell 应该在 alpine 容器中。做一个"ping nginx"。您应该能够 ping 通它。反之亦然。

所以现在,您在 localhost:80(从您的主机)部署了一个 nginx,它可以使用它们的 container/service 名称调用其他容器。在 docker 网络中部署 Web-api 的访问点非常有用。

我认为这取决于您希望使用 nginx 实例提供多少服务。例如,由于你只能将一个 nginx 实例绑定到 80 和 443 端口,如果你想在不同域之间共享相同的 SAP,我会在主机上使用 nginx 运行(或在专用堆栈中,但看起来很复杂)。如果您将 SAP 用于单个域,那么将它放在堆栈中是非常有意义的。