Re: Как обработать редирект и проксировать результат приложению?

Александр Карабанов zend.karabanov на gmail.com
Пн Июн 29 07:03:20 UTC 2020


Вот такое решение нашёл:
https://serverfault.com/questions/423265/how-to-follow-http-redirects-inside-nginx

server {
    ...

    location / {
        proxy_pass http://backend;
        # You may need to uncomment the following line if your
redirects are relative, e.g. /foo/bar        #proxy_redirect / /;
  proxy_intercept_errors on;
        error_page 301 302 307 = @handle_redirect;
    }

    location @handle_redirect {
        set $saved_redirect_location '$upstream_http_location';
        proxy_pass $saved_redirect_location;
    }}


пт, 26 июн. 2020 г. в 15:57, Илья Шипицин <chipitsine на gmail.com>:

> это не во всех случаях можно сделать корректно.
>
> например, 301 по RFC можно отвечать только на GET. а если сервер ответил
> 301 на POST, какой запрос надо отправить на новый адрес, тоже POST ? или
> GET ?
> вот именно этот выбор и доносится до клиента, когда 301 транслируется один
> в один.
>
> теоретически, вы можете накостылить обработчик 301-ошибки, назначить его
> на локейшен, и в локейшене сделать proxy_pass
> но это очень скользкая дорожка
>
> пт, 26 июн. 2020 г. в 17:41, Александр Карабанов <zend.karabanov на gmail.com
> >:
>
>> Здравствуйте.
>>
>> Приложению запрещено самостоятельно открывать соединения с внешним миром.
>> Приложение отправляет запрос на proxykipalive.lan, а Nginx проксирует этот
>> запрос на целевой хост (это сделано, чтобы переиспользовать соединение за
>> счёт keepalive и не открывать новое соединение на каждый запрос от
>> приложения).
>> Возникла ситуация, когда целевой хост стал отвечать 301 редиректом,
>> естественно приложение, получив вместо ожидаемого контента, 301 редирект
>> сломалось.
>> Есть ли способ заставить Nginx обработать редирект самостоятельно и
>> отдать приложению готовый контент?
>> --
>> С уважением,
>> Александр Карабанов
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru на nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



-- 
С уважением,
Александр Карабанов
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20200629/9971c8c0/attachment-0001.htm>


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