<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Не проверял. GET работает, как ожидается. Для решения моей проблемы этого достаточно.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">пн, 29 июн. 2020 г. в 10:48, Илья Шипицин <<a href="mailto:chipitsine@gmail.com">chipitsine@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>я примерно такое имел в виду.</div><div><br></div><div>а вот расскажите, как будет работать, если на POST запрос будет 301, вы в @handle_redirect отправите тоже POST ?<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">пн, 29 июн. 2020 г. в 12:03, Александр Карабанов <<a href="mailto:zend.karabanov@gmail.com" target="_blank">zend.karabanov@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Вот такое решение нашёл:</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><a href="https://serverfault.com/questions/423265/how-to-follow-http-redirects-inside-nginx" target="_blank">https://serverfault.com/questions/423265/how-to-follow-http-redirects-inside-nginx</a><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><pre style="font-family:Consolas,Menlo,"Liberation Mono",Courier,monospace;margin:1em 1em 1em 1.6em;padding:8px;background-color:rgb(250,250,250);border:1px solid rgb(226,226,226);border-radius:3px;width:auto;overflow:auto hidden;color:rgb(51,51,51);font-size:12px"><code style="font-family:Consolas,Menlo,"Liberation Mono",Courier,monospace;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial"><span>server</span> <span>{</span>
    <span>...</span>

    <span>location</span> <span>/</span> <span>{</span>
        <span>proxy_pass</span> <span>http</span><span>:</span><span style="color:rgb(136,136,136)">//backend;</span>
        <span style="color:rgb(85,119,153)"># You may need to uncomment the following line if your redirects are relative, e.g. /foo/bar
</span>        <span style="color:rgb(85,119,153)">#proxy_redirect / /;
</span>        <span>proxy_intercept_errors</span> <span>on</span><span>;</span>
        <span>error_page</span> <span style="color:rgb(0,0,221);font-weight:bold">301</span> <span style="color:rgb(0,0,221);font-weight:bold">302</span> <span style="color:rgb(0,0,221);font-weight:bold">307</span> <span>=</span> <span style="color:rgb(255,0,0);background-color:rgb(255,170,170)">@</span><span>handle_redirect</span><span>;</span>
    <span>}</span>

    <span>location</span> <span style="color:rgb(255,0,0);background-color:rgb(255,170,170)">@</span><span>handle_redirect</span> <span>{</span>
        <span>set</span> <span style="color:rgb(255,0,0);background-color:rgb(255,170,170)">$</span><span>saved_redirect_location</span> <span style="color:rgb(255,0,0);background-color:rgb(255,170,170)">'$</span><span>upstream_http_location</span><span style="color:rgb(255,0,0);background-color:rgb(255,170,170)">'</span><span>;</span>
        <span>proxy_pass</span> <span style="color:rgb(255,0,0);background-color:rgb(255,170,170)">$</span><span>saved_redirect_location</span><span>;</span>
    <span>}</span>
<span>}</span></code></pre></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">пт, 26 июн. 2020 г. в 15:57, Илья Шипицин <<a href="mailto:chipitsine@gmail.com" target="_blank">chipitsine@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>это не во всех случаях можно сделать корректно.</div><div><br></div><div>например, 301 по RFC можно отвечать только на GET. а если сервер ответил 301 на POST, какой запрос надо отправить на новый адрес, тоже POST ? или GET ?</div><div>вот именно этот выбор и доносится до клиента, когда 301 транслируется один в один.</div><div><br></div><div>теоретически, вы можете накостылить обработчик 301-ошибки, назначить его на локейшен, и в локейшене сделать proxy_pass</div><div>но это очень скользкая дорожка<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">пт, 26 июн. 2020 г. в 17:41, Александр Карабанов <<a href="mailto:zend.karabanov@gmail.com" target="_blank">zend.karabanov@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Здравствуйте.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Приложению запрещено самостоятельно открывать соединения с внешним миром. Приложение отправляет запрос на proxykipalive.lan, а Nginx проксирует этот запрос на целевой хост (это сделано, чтобы переиспользовать соединение за счёт keepalive и не открывать новое соединение на каждый запрос от приложения).</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Возникла ситуация, когда целевой хост стал отвечать 301 редиректом, естественно приложение, получив вместо ожидаемого контента, 301 редирект сломалось.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Есть ли способ заставить Nginx обработать редирект самостоятельно и отдать приложению готовый контент? </div><div>-- <br></div><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div><span style="color:rgb(102,102,102)">С уважением,</span><br></div><div><font color="#666666">Александр Карабанов<br></font></div></div></div></div></div></div></div>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></blockquote></div>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div><span style="color:rgb(102,102,102)">С уважением,</span><br></div><div><font color="#666666">Александр Карабанов<br></font></div></div></div></div></div></div>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></blockquote></div>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div><span style="color:rgb(102,102,102)">С уважением,</span><br></div><div><font color="#666666">Александр Карабанов<br></font></div></div></div></div></div></div>