Многоразовое перенаправление за счет error page

Vadim Osipov nginx-forum на nginx.us
Вс Авг 23 20:56:10 UTC 2015


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

Скажите, пожалуйста, можно ли использовать несколько раз error_page для
перемещения по location-ам, если получаемый статус не является желаемым ? 
Вот конфигурация (рабочая, но придуманная "от фонаря" для целей
тестирования):

location /images {
    set $memcached_key "$arg_mykey";
    memcached_pass localhost:11211;
    error_page 404 502 504 @go_to_server;
}

location @go_to_server {
    proxy_pass http://localhost:8080;
    error_page 400 @go_for_default;
}

location @go_for_default {
    set $memcached_key "default_key_$arg_mykey";
    memcached_pass localhost:11211;
    error_page 404 502 502 @go_for_default_to_server;
}

location @go_for_default_to_server {
    proxy_pass http://localhost:8080/default/images;
    return 400;
}

Посылаю запрос на /images, если в memcached нету, то обрабатываю от него
статус, путем перенаправления запроса на сервер приложений. 
Но вот что мне не удалось, так это обработать статус от сервера приложений
путем переброски запроса на другой location, чтобы, например как здесь,
сделать запрос к memcached за дефолтным значением (и опять на сервер
приложений в последний раз).

Может быть то, что я хочу сделать 
не так делается 
или есть другая возможность за счет другой директивы 
или в принципе такое нельзя сделать в nginx (только 1 раз от memcached ->
backend и за счет error_page) 
?

P.S.
location @go_to_server {
    proxy_pass http://localhost:8080;
    error_page 400 @go_for_default;
}
самое интересное, что статус на клиент приходит 404. Даже если заменить на 
    error_page 400 = 200;
Получается, что 2ой раз использование error_page игнорируется ?

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,261196,261196#msg-261196



Подробная информация о списке рассылки nginx-ru