Anatoly Mikhaylov
May 26, 2015 06:06PM
В настоящее время такой конфиг работает с 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@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@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

$request_body_file

Sergey Egorov May 22, 2015 09:14AM

Re: $request_body_file

Maxim Dounin May 22, 2015 09:46AM

Re: $request_body_file

Anatoly Mikhaylov May 26, 2015 06:06PM

Re: $request_body_file

Валентин Бартенев May 27, 2015 06:46AM

Re: $request_body_file

Maxim Dounin May 27, 2015 09:08AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 259
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready