我有一个 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 在入口点脚本中获取证书。