在一台服务器上使用 https 运行多个 docker 容器的最佳方法是什么?

在一台服务器上使用 https 运行多个 docker 容器的最佳方法是什么?

所以目前我有一个 Python Flask 应用程序。这是一个带有不同 webhook 的基本脚本。对于我想要添加的每个新 webhook,我都需要一个不同的 Docker 容器。因此,由于我将扩展 webhook,我必须使用 docker 来设置多个容器。但是当我尝试使用 Dockerfile 创建不同的端点时,我必须在 nginx.conf 中手动创建一些端点,并为 uwsgi 创建不同的套接字(或构建一个执行所有套接字、端点等的脚本)。

所以我基本上想要实现的是:

Example.com/webhook1 (container1)
Example.com/webhook2 (container2)
Example.com/webhook3 (container3)
etc.

让不同的容器以不同的端点运行的最佳方法是什么?

我的服务器是 Ubuntu 服务器,使用 NGINX 作为带有 uwsgi 的反向代理,并使用 certbot 作为 ssl 证书。

答案1

有多种方法可以实现这一点。

我所做的是,我创建了一个所谓的“主” NGINX 容器(或者它也可以在主机上运行),它通过端口 443 进行通信。然后,我将所有其他容器设置为使用不同的端口(或者您也可以使用UNIX 套接字)。然后我将我的“主”NGINX 实例设置为反向代理

例如,让我们看看以下 NGINX 实例的设置:

在主 NGINX 实例的配置中,您应该有类似这样的内容:

location /webhook1 {
  proxy_pass       http://127.0.0.1:8801/webhook1;
}

location /webhook2 {
  proxy_pass       http://127.0.0.1:8802/webhook2;
}

您只需在“主” NGINX 实例上使用 SSL,因为在同一台机器上通信时不需要 SSL。只需确保您的防火墙拒绝访问所有其他内部 NGINX 实例即可。

相关内容