$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