如何处理 nginx 容器创建 Letsencrypt 密钥然后使用它们?

如何处理 nginx 容器创建 Letsencrypt 密钥然后使用它们?

我有一个 docker 镜像,它为我的 web 应用创建容器。web 应用的细节根本不重要。重要的是每次容器都可以使用不同的地址(server1.、server2. 等),我想为每个地址创建 Let's encrypt 密钥。为了做到这一点,我使用 web 服务授权,因此创建certbot了一些文件,然后服务器可以访问这些文件lets encrypt来测试我是否是域的所有者。测试完成后,它将生成可以使用的密钥。

目前,我的nginx配置文件包含两个server部分,一部分用于http,一部分用于 https。我只需注释掉该https部分,启动服务器,执行certbot操作,取消注释该https部分并重新启动容器。

这有点麻烦,很难实现自动化,有什么办法可以更改配置,nginx以便在没有 SSL 证书时它不会崩溃吗?然后重启后它会自动运行吗?

或者也许有更简单的方法来处理我的情况?

答案1

步骤 1:将两个服务器部分放在不同的文件中,并使用通配符从 nginx.conf 中包含它们。例如,include config.d/*.conf。

第 2 步:将 SSL 服务器文件重命名为 *.conf.disabled。

步骤 3:在入口点脚本中,测试证书文件是否存在。如果存在,则将 .conf.disabled 文件重命名为 .conf。

替代方案:在大多数情况下,您也可以仅使用 certbot 在入口点脚本中获取证书。

相关内容