所以目前我有一个 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 | https://127.0.0.1:443/或者https://example.com |
容器 1 | http://127.0.0.1:8801/webhook1 |
容器 2 | http://127.0.0.1:8802/webhook2 |
在主 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 实例即可。