$request_body_file

Anatoly Mikhaylov anatoly at sonru.com
Tue May 26 22:05:38 UTC 2015


В настоящее время такой конфиг работает с Nginx 1.5.13.
Все данные, необходимые бэкэнду, чтобы принять proxy_pass, передаются 
в заголовках, проблем никаких не возникает.

location /upload {
  limit_except POST          { deny all; }

  keepalive_timeout          300s;
  client_body_temp_path      /tmp/;
  client_body_in_file_only   on;
  client_body_buffer_size    128K;
  client_max_body_size       100M;

  proxy_pass_request_headers on;
  proxy_set_header           X-File $request_body_file; 
  proxy_set_body             off;
  proxy_redirect             off;
  proxy_pass                 https://api.domain.com/v1/upload;
  error_log                  /var/log/nginx/nginx.upload.error.log;
}

Будет ли какие изменения поведения аплоада при апргейде до 1.8+?

Анатолий

On 22 May 2015, at 14:43, Maxim Dounin <mdounin at mdounin.ru> wrote:

> 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 mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20150526/377a1df8/attachment.html>


Подробная информация о списке рассылки nginx-ru