ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Обработка редиректов внутри



И снова привет,

конфигурация, в целом, работает, но только один раз: при первом запросе цепочка отрабатывает как надо, переменная $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 mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.