如果不为每个域名设置一个文件,你该如何处理数百个带有 SSL 的域名呢?

如果不为每个域名设置一个文件,你该如何处理数百个带有 SSL 的域名呢?

背景

我目前运营一个电子商务平台,此时设置新域名时,自动脚本就会运行。它首先验证 DNS 记录,生成 Nginx 配置文件,然后使用 LetsEncrypt 生成 SSL 证书。

然而,这似乎很冗长并且效率不高,因为如果我需要进行更改(例如升级到较新版本的 php),那么我必须更新每个文件,而且,每次添加、删除或更改新域时,我都必须重新加载 Nginx。

目标

有没有办法更有效地做到这一点,以便将来更容易地实现负载平衡?

目前,当进行负载平衡时,我必须决定平衡哪些网站,并且每个网站都需要手动设置每个域。

答案1

您可以利用include指示在 Nginx 中。

将所有常用选项放入某个文件中,并将include该文件放在适当的位置。例如,在一个反向代理上,要添加的标头集(X-Forwarded-For以及类似内容)和 ACME 验证 URI 的排除在所有代理虚拟主机上都是相同的,因此我将它们放入通用文件中,并server在需要时将该文件包含在指令中。如果我需要更新(例如添加另一个标头),我只需更新该单个包含的文件即可。

至于重新加载 Nginx,这是不可避免的。当您以任何方式更改其配置时,无论是添加文件还是编辑现有文件,您都需要告诉它重新读取更新后的配置,这基本上就是 reload 所做的。这很优雅,而且这种情况很常见(不仅仅是 Nginx)。我不明白为什么要担心。它就像“应用”按钮一样。Ansible 可以为您完成(使用处理程序)。

相关内容