我需要能够在 nginx 中管理数千个域,并且每个域都会有一个我将管理的 lets-encrypt 认证。
我读到过 Apache 有一个宏功能这样您就可以做一些事情,而不必为每个域重复相同的虚拟主机部分。
如果您需要管理数千个域名,那么这个功能将会非常方便。
nginx 是否有类似的东西可以在这方面提供帮助?
<Macro VHost $domain>
<VirtualHost *:443>
ProxyProtocol On
ServerName $domain
SSLEngine on
SSLCertificateFile $domain.crt
SSLCertificateKeyFile $domain.key
SSLCertificateChainFile lets-encrypt-cross-signed.pem
</VirtualHost>
答案1
使用 Nginx,你可以预先使用外部工具完成此操作,例如nginx-confgen
创建静态配置。在配置中不使用变量的原因在Nginx 常见问题解答:
变量不应用作模板宏。变量在处理每个请求期间在运行时进行评估,因此与纯静态配置相比,它们的成本相当高。使用变量来存储静态字符串也是一个坏主意。相反,应该使用宏扩展和“include”指令来更轻松地生成配置,并且可以使用外部工具(例如 sed + make 或任何其他常见模板机制)来完成。