Назад | Перейти на главную страницу

nginx: error_page не работает

Я пытаюсь настроить страницу обслуживания для своего приложения rails с помощью этого фрагмента.

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

Это работает до тех пор, пока наличие maintenance.html заставляет веб-сервер возвращать 503. Но он возвращает минимальную error_page по умолчанию nginx, а не мой maintenance.html. Зачем?

nginx 1.0.12 в Ubuntu 10.04 LTS

Полная конфигурация vhost: https://gist.github.com/1948225

Директивы 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 {
}