proxy_intercept_errors для 503, error_page 504 и настоящий connect_timeout

Олег Петрачёв cronfy at gmail.com
Wed Jun 17 22:31:07 MSD 2009


Здравствуйте,

В продолжение об обработке ошибок бэкэнда.

Задача:
1. Если бэкэнд отдал 503, показать свою страничку 503.
2. Если бэкэнд отдал 504 (сам!), показать то, что отдал бэкэнд.
3. Если случился proxy_connect_timeout, показать свою страничку 504.

На деле получается сделать либо 1 + 2, либо 2 + 3.

Имеем такой конфиг:

    server {
        listen 44280;
        error_page 504 /error/504.html;

        location / {
            proxy_intercept_errors on;           ## directive_1
            error_page 503 /error/503.html;    ## directive_2

            proxy_connect_timeout 1;
            proxy_pass http://127.0.0.1;
        }

        location /error/ {
             root /home/SERVICE;
        }
    }

В этом конфиге выполняются условия 1 и 2, но если бэкэнд не отвечает,
мы получаем СТАНДАРТНУЮ страницу nginx, а не нашу.

Если закомментировать directive_1 и directive_2, то выполняются
условия 2 + 3, но про собственную 503 можно забыть.

Можно ли сделать, чтобы все три условия выполнялись?


-- 
// cronfy


More information about the nginx-ru mailing list