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

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


Не проверял. GET работает, как ожидается. Для решения моей проблемы этого
достаточно.




пн, 29 июн. 2020 г. в 10:48, Илья Шипицин <chipitsine на gmail.com>:

> я примерно такое имел в виду.
>
> а вот расскажите, как будет работать, если на POST запрос будет 301, вы в
> @handle_redirect отправите тоже POST ?
>
> пн, 29 июн. 2020 г. в 12:03, Александр Карабанов <zend.karabanov на gmail.com
> >:
>
>> Вот такое решение нашёл:
>>
>> 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
>>
>>
>>
>> --
>> С уважением,
>> Александр Карабанов
>> _______________________________________________
>> 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/20200630/cd92bbf8/attachment-0001.htm>


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