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

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

Ответить