<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Apr 12, 2013, at 10:29 AM, Maxim Dounin <<a href="mailto:mdounin@mdounin.ru">mdounin@mdounin.ru</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Hello!<br><br>On Thu, Apr 11, 2013 at 05:15:15PM +0100, Anatoly Mikhailov wrote:<br><br><blockquote type="cite"><br>On Apr 10, 2013, at 12:43 AM, Maxim Dounin <<a href="mailto:mdounin@mdounin.ru">mdounin@mdounin.ru</a>> wrote:<br><br><blockquote type="cite">Hello!<br><br>On Tue, Apr 09, 2013 at 08:30:17PM +0100, Anatoly Mikhailov wrote:<br><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br>Так - должно работать, смотрите внимательно, что у вас в коде <br>авторизатора на бекенде происходит.  Видимо, он пытается лезть в <br>тело, и вполне логично, что тела не находит - его ещё не читали.<br></blockquote><br>на бэкэнде у нас примитивный Rack, который к сожалению не пускает<br>запрос с пустым BODY, придется ограничиться Basic HTTP Auth для<br>запроса /upload...<br></blockquote><br>Как вам будет угодно.  Но вообще - сделать body непустым, или <br>убрать из запроса то, что ваш бекенд воспринимает в штыки - это ни <br>разу не проблема:<br><br><a href="http://nginx.org/r/proxy_set_header">http://nginx.org/r/proxy_set_header</a><br>http://nginx.org/r/proxy_set_body<br>http://nginx.org/r/proxy_method<br><br>Собственно, есть все механизмы для того, чтобы полностью <br>сформировать запрос на бекенд.<br><br></blockquote><div><br></div><div>так (proxy_set_body off) заработало, спасибо</div><div><br></div><div><div>  location = /authentication/check {</div><div>    proxy_set_header           Content-Length "";</div><div>    proxy_pass_request_body    off;</div><div>    proxy_set_body             off;</div><div>    proxy_buffering            off;</div><div>    proxy_pass                 <a href="http://unicorn_api/authentication/check">http://unicorn_api/authentication/check</a>;</div><div>  }</div><div><br></div><div>В итоге "client_body_in_file_only on" и плагин "http_auth_request" в тандеме превращаются</div><div>в отличное решение для аплоада больших файлов без необходимости пропускать их</div><div>файл через сокет (лишние операции копирования). Плюс ко всему - предварительная </div><div>бэкэнд-аутентификация, которая не дает начать аплоад, если она не пройдена.</div><div>Насколько я понимаю, при обычном аплоаде бэкэнд-аутентификация запускается</div><div>только после того, как файл уже загружен и пропущен через сокет?</div><div><br></div><div>Вопрос только один - почему эти просто замечательные вещи слабо документированы? :) </div><div>Вы даже не представляете, насколько это востребованная типовая задача, которую </div><div>почти всегда решают с помощью костылей, но nginx уже имеет все, что нужно.</div></div><div><br></div><br><blockquote type="cite">-- <br>Maxim Dounin<br><a href="http://nginx.org/en/donation.html">http://nginx.org/en/donation.html</a><br><br>_______________________________________________<br>nginx-ru mailing list<br>nginx-ru@nginx.org<br>http://mailman.nginx.org/mailman/listinfo/nginx-ru</blockquote></div><br></body></html>