Я пытаюсь настроить страницу обслуживания для своего приложения 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 {
}