$request_body_file
Maxim Dounin
mdounin at mdounin.ru
Fri May 22 13:43:58 UTC 2015
Hello!
On Fri, May 22, 2015 at 04:11:11PM +0300, Sergey Egorov wrote:
> Всем Привет!
>
> 1.8.0 - проблемы с передачей $request_body_file в upstream.
>
> Нашел вот это -
> http://mailman.nginx.org/pipermail/nginx-ru/2007-December/015531.html
>
> Пробовал вот так
> ```
> proxy_set_header X-FILE "$request_body_file";
> proxy_pass
> http://127.0.0.1:8810/v1/upload?file=$request_body_file;
> ```
>
> Пустая переменная при POST - X-FILE нет в заголовках, и пусто после file=
>
> Если вот так
> ```
> proxy_set_header X-FILE "$request_body_file";
> proxy_pass http://127.0.0.1:8810/v1/upload;
> ```
>
> То в заголовках есть. Но хочется в запросе.
>
> Баг или так и задуманно?
Переменная $request_body_file имеет какое-либо разумное значение
только после того, как прочитано тело. Меж тем, переменные в
директиве proxy_pass разыменовываются до этого. Кроме того, в
результате обращения к переменной $request_body_file - кешируется
пустое значение, и используется в дальнейшем.
Т.е., фактически, так и задумано. Точнее, предполагается, что так
делать не будут, а кто сделал - тот получил уникальную возможность
героически преодолевать трудности.
Отдельно отмечу, что использовать переменные в proxy_pass без
нужды - не очень хорошая идея сама по себе. В данном случае я бы
рекомендовал ограничиться заголовком или proxy_set_body.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru