我有一个带有多个 Docker 容器的 Web 服务器,其中一个是nginx
。为了便于重新部署,该服务器由脚本构建。
现在我想使用 letsencrypt 证书。但是:
- letsencrypt 需要一个正在运行的 HTTP 网络服务器进行验证,并且
- 启用HTTPS的nginx需要证书才能启动。
该脚本无法先启动 nginx,因为证书会丢失。但该脚本也无法先获取证书,因为这需要运行 Web 服务器。典型的先有鸡还是先有蛋的问题。
一个解决方案是
- 首先创建一个仅支持 HTTP 的 nginx,
- 运行 certbot 来获取证书,
- 修改 nginx 配置并以 HTTPS 模式重新启动 Web 服务器。
这似乎不是一个优雅的解决方案,所以我想知道是否有人想出了更好的解决方案。