如何让 NGINX 有条件地重定向到 HTTPS?

如何让 NGINX 有条件地重定向到 HTTPS?

我正在设置 Let's Encrypt 以自动颁发证书。每个用户都有自己的子域,因此我需要每隔几个小时批量创建证书,以避免 LE 的速率限制。

在他们注册和证书准备好之间,我希望通过 HTTP 为他们的子域提供服务。只要证书存在,操作就应该始终将 HTTP 重定向到 HTTPS。如果我们可以检查证书的有效性,那就更好了。有什么建议吗?

答案1

为什么不将调整 nginx 作为处理批量请求的同一脚本的一部分呢?

例如,您可以在配置管理工具(例如 ansible)中创建一些代码,如果未看到给定的证书,则创建仅 HTTP 的虚拟主机,当证书实际可用时,则创建 HTTPS 虚拟主机。

然后,您可以让现有脚本在运行结束时调用配置管理工具,或者甚至只是定期运行配置管理工具。

但是,根据您向用户提供的服务类型,可能不希望允许 HTTP 访问(特别是如果他们可能做的第一件事就是尝试登录该服务)。

相关内容