<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;">В настоящее время такой конфиг работает с Nginx 1.5.13.<div>Все данные, необходимые бэкэнду, чтобы принять proxy_pass, передаются </div><div>в заголовках, проблем никаких не возникает.<br><div><div><br></div><div><div>location /upload {</div><div>  limit_except POST          { deny all; }</div><div><br></div><div>  keepalive_timeout          300s;</div><div>  client_body_temp_path      /tmp/;</div><div>  client_body_in_file_only   on;</div><div>  client_body_buffer_size    128K;</div><div>  client_max_body_size       100M;</div><div><br></div><div>  proxy_pass_request_headers on;</div><div>  proxy_set_header           X-File $request_body_file; </div><div>  proxy_set_body             off;</div><div>  proxy_redirect             off;</div><div>  proxy_pass                 <a href="https://api.domain.com/v1/upload">https://api.domain.com/v1/upload</a>;</div><div>  error_log                  /var/log/nginx/nginx.upload.error.log;</div><div>}</div><div><br></div><div>Будет ли какие изменения поведения аплоада при апргейде до 1.8+?</div><div><br></div><div>Анатолий</div><div><br></div><div><div>On 22 May 2015, at 14:43, Maxim Dounin <<a href="mailto:mdounin@mdounin.ru">mdounin@mdounin.ru</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">Hello!<br><br>On Fri, May 22, 2015 at 04:11:11PM +0300, Sergey Egorov wrote:<br><br><blockquote type="cite">Всем Привет!<br><br>1.8.0 - проблемы с передачей $request_body_file в upstream.<br><br>Нашел вот это -<br><a href="http://mailman.nginx.org/pipermail/nginx-ru/2007-December/015531.html">http://mailman.nginx.org/pipermail/nginx-ru/2007-December/015531.html</a><br><br>Пробовал вот так<br>```<br>proxy_set_header   X-FILE "$request_body_file";<br>proxy_pass<br>http://127.0.0.1:8810/v1/upload?file=$request_body_file;<br>```<br><br>Пустая переменная при POST - X-FILE нет в заголовках, и пусто после file=<br><br>Если вот так<br>```<br>proxy_set_header   X-FILE "$request_body_file";<br>proxy_pass              http://127.0.0.1:8810/v1/upload;<br>```<br><br>То в заголовках есть.  Но хочется в запросе.<br><br>Баг или так и задуманно?<br></blockquote><br>Переменная $request_body_file имеет какое-либо разумное значение<span class="Apple-converted-space"> </span><br>только после того, как прочитано тело.  Меж тем, переменные в<span class="Apple-converted-space"> </span><br>директиве proxy_pass разыменовываются до этого.  Кроме того, в<span class="Apple-converted-space"> </span><br>результате обращения к переменной $request_body_file - кешируется<span class="Apple-converted-space"> </span><br>пустое значение, и используется в дальнейшем.<br><br>Т.е., фактически, так и задумано.  Точнее, предполагается, что так<span class="Apple-converted-space"> </span><br>делать не будут, а кто сделал - тот получил уникальную возможность<span class="Apple-converted-space"> </span><br>героически преодолевать трудности.<br><br>Отдельно отмечу, что использовать переменные в proxy_pass без<span class="Apple-converted-space"> </span><br>нужды - не очень хорошая идея сама по себе.  В данном случае я бы<span class="Apple-converted-space"> </span><br>рекомендовал ограничиться заголовком или proxy_set_body.<br><br>--<span class="Apple-converted-space"> </span><br>Maxim Dounin<br><a href="http://nginx.org/">http://nginx.org/</a><br><br>_______________________________________________<br>nginx-ru mailing list<br><a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></div></blockquote></div><br></div></div></div></body></html>