覆盖 NGINX 中托管的各个网站以显示维护页面

覆盖 NGINX 中托管的各个网站以显示维护页面

我们有一个架构,在 NGINX 中托管多个站点。每个 NGINX 站点都有自己的配置。每个站点都指向一个公共代码库,但指向不同的域名及其关联的 SSL。

我们想要做的是在维护期间,一旦发出页面请求,就显示一个通用的 Maintenance.html 页面。虽然我们可以进入每个网站的 website.conf 文件并插入重写规则,但这不是一个完整的解决方案 - 它更像是我们试图避免的一种黑客行为。

我们希望在根级别的 nginx.conf 文件中实现此功能,从而拦截任何超过 (443) 的请求(在加载其自己的配置文件之前)并重定向到通用的 Maintenance.html 页面。

如何在 nginx.conf 文件级别实现这一点?

谢谢

答案1

您可以对所有主机进行一次性编辑(并且不要忘记编辑创建这些主机的模板),之后您将不需要编辑所有主机。

创建一个空文件,例如,您可以将其命名为“all_vhosts_override”。include "all_vhosts_override";在每个 vhost 定义的顶部附近添加所有location条目alias

当您需要一次性覆盖所有 vhost 中的某些内容时,您可以在该文件中添加语句并重新加载 nginx。所有 vhost 都将从此单个文件接收配置,您无需更新其各自的配置。只需在完成维护后清除覆盖文件并再次重新加载即可。

相关内容