nginx:error_page 不起作用

nginx:error_page 不起作用

我尝试使用这个代码片段为我的 rails 应用程序设置一个维护页面。

error_page 503 /system/maintenance.html;
if (-f $document_root/system/maintenance.html) {
  return 503;
}

只要存在 Maintenance.html 导致 Web 服务器返回 503,这种方法就有效。但它返回的是最小的 nginx 默认 error_page,而不是我的 Maintenance.html。为什么?

Ubuntu 10.04 LTS 上的 nginx 1.0.12

完整的vhost配置:https://gist.github.com/1948225

答案1

“if” 和 “return” 指令是 ngx_rewrite_module 的一部分。由于您在服务器级别声明了此类条件,因此您没有机会让 nginx 处理 error_page。

使您的配置清晰:

root /home/igel/www/stage.example.com/current/public;
error_page 503 /system/maintenance.html;

location / {
       if ( -e /system/maintenance.html ) {
              return 503;
       }
}
location = /system/maintenance.html {
}

相关内容