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