我对 Docker 还很陌生,但我已经成功建立了一个docker-compose.yaml
由 Mosquitto、NodeRED、InfluxDB 和 Grafana 等少数服务组成的系统。每个都在不同的端口上发布一个 HTTP 端点。这些在本地都运行良好。
现在我想将它们移至云中的主机,但 Safari 要求所有 HTTP 连接均为 HTTPS/TLS,因此我需要为所有内容设置证书。据我所知,我认为我有两个选择:
单独配置每个服务以使用 SSL 证书。我可能可以让它们全部引用放置在 docker-compose 中的服务之间共享的卷上的相同证书。
也许将 nginx 设置为其中每个的代理?这将是 docker-compose 中的另一个服务,将其容器上的端口上的连接转发到其他容器上的端口。
我不确定这些方法中哪一种更好。因为它是 Let's Encrypt,所以证书需要经常更新。
我在谷歌上搜索了这个问题,但几乎没有找到直接的解决方案。我本以为这是一个更常见的问题,但也许不是。
答案1
对于这两种方法,您都需要不同的实现;但我更喜欢经典的:
NGINX:
Generate a server certificate ( Used by the 4 apps )
You will need to create 1 Vhost for every app.
Map the exposed ports to the Vhosts on docker-compose
Use of certbot for auto renewal on your docker-compose.
缺点:
You will have a single entry to your apps ( **Single point of failure** )
The communication between your NGINX Reverse Proxy and your containers will not be **secured**.
优点:快速实施
经典的:
Generate a server certificate ( Used by the 4 apps )
Setup SSL differently on every app configuration file.
Use of certbot for auto renewal on your docker-compose.
优点:实施缓慢