Re: Обработка редиректов внутри
Vasiliy Shmelev
shade at yandex-team.ru
Thu Feb 13 12:45:31 UTC 2014
И снова привет,
конфигурация, в целом, работает, но только один раз: при первом запросе
цепочка отрабатывает как надо, переменная $upstream_http_location
проставляется. При втором запросе, когда 301 берется из кеша,
$upstream_http_location уже пустая. Есть ощущение, что при ответе 301 из
кеша внутри не срабатывает модуль апстрима, и, соответственно,
переменные заголовков пустые.
Можно это как-то обойти?
Alex Kapranoff wrote:
> * Igor Sysoev [August 31 2012, 18:15]:
>> On Fri, Aug 31, 2012 at 06:04:08PM +0400, Alex Kapranoff wrote:
>>> Привет!
>>>
>>> Есть простой прокси. Хотим обрабатывать редиректы от апстримов внутри
>>> nginx -- так, чтобы они не доходили до браузера. Пусть браузер
>>> получает только последний ответ в цепочке. Не получается.
>>>
>>> Первая мысль для цепочки длинной 1: ловим редиректы с помощью
>>> error_page в именованый location со вторым proxy_pass внутри. Однако
>>> до адреса, на который делается редирект, добраться не удаётся.
>>>
>>> Подскажете что-нибудь?
>> Как-то так:
>>
>> resolver 127.0.0.1;
>>
>> location / {
>> ...
>> proxy_intercept_errors on;
>> error_page 302 = @redirect;
>> }
>>
>> location @redirect {
>> set $redirect $http_upstream_location;
>> proxy_pass $redirect;
>> }
>
> Да, получается, с учётом поправки $http_upstream_ --> $upstream_http_
>
> Спасибо!
>
--
Vasily Shmelev
project manager
Yandex
tel.: 7 (495) 739-70-00, ext.: 3241
Подробная информация о списке рассылки nginx-ru