$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