我们有一个架构,在 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 都将从此单个文件接收配置,您无需更新其各自的配置。只需在完成维护后清除覆盖文件并再次重新加载即可。