当我的应用程序关闭时,nginx 提供的静态错误页面

当我的应用程序关闭时,nginx 提供的静态错误页面

如果我的 (Rails) 应用程序停机或正在进行数据库维护或其他什么情况,我希望在 nginx 级别指定以提供静态页面。因此每个 URL 都像http://example.com/* 应该提供静态 html 文件,例如 /var/www/example/foo.html。

尝试在我的 nginx 配置中指定这一点导致我出现适合和无限循环等等。

我正在尝试

location / {
  root /var/www/example;
  index foo.html;
  rewrite ^/.+$ foo.html;
}

如何让域名上的每个 URL 都提供单个静态文件?

答案1

添加两个位置,如下所示:

location = /foo.htm {
  root /var/www/example;
  index foo.html;
}

location / {
  rewrite ^/.+$ /foo.htm;
}

答案2

我不太确定,但是如果 Rails 服务器出现故障,就会出现错误 500。也许你可以使用错误页面指令类似

error_page 500 /staticpage.html

答案3

使用命名位置,它在重定向期间不会改变 URI。

此代码片段处理“rails is down”的情况。

error_page 504 @rubydown; # 504 - gateway timeout

location @rubydown {
    internal;
    root /var/www;
    rewrite ^ /504.html break;
}

对于维护通知,您可以在根位置使用类似的东西......

location / {
    root /var/www;
    try_files /maintaince.html @rails;
}

location @rails {
    internal;
    proxy_pass http://rails.backend;
    # blablabla proxy_pass setting for Rails
}

创建文件 /var/www/maintaince.html.tmpl,写入所需文本。在维护工作之前创建类似的 simlinkln -s /var/www/maintaince.html.tmpl /var/www/maintaince.html或重命名文件。维护工作完成后,删除 simlink 或将文件重命名。

答案4

以下应将所有请求重定向至/var/www/example/foo.html

地点 / {
  根/var/www/示例;
  索引 foo.html;
  # 在下面的try_files指令中,请求永远不会达到=404。
  尝试文件/foo.html =404;
}

相关内容