Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Неверная обработка/пере дача POST запроса типа Content -Type: multipart/form-data
Hello!
On Tue, Oct 25, 2011 at 06:45:11PM -0400, trinex wrote:
> Здравствуйте.
> Nginx работает как проксирующий
> веб-сервер, передавая динамические
> запросы на apache + php, в общем, обычная и
> распространенная схема. Конфиг nginx
> выглядит так:
>
>
> server {
> ...
>
> location @fallback {
> root /home/trinex.ru/public_html;
>
> proxy_cache off;
> proxy_pass http://127.0.0.1:8800;
> proxy_redirect off;
> proxy_set_header Host $host;
> proxy_set_header X-Real-IP
> $remote_addr;
> proxy_set_header X-Forwarded-For
> $proxy_add_x_forwarded_for;
> proxy_connect_timeout 90;
> proxy_send_timeout 90;
> proxy_read_timeout 90;
> proxy_send_lowat 12000;
> proxy_buffer_size 4k;
> proxy_buffers 4 32k;
> proxy_busy_buffers_size 64k;
> proxy_temp_file_write_size 64k;
> proxy_temp_path
> /usr/local/nginx/proxy_temp 1 2;
> charset utf-8;
> }
>
>
> location ~*
> \.(jpg|jpeg|gif|png|ico|css|html|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$
> {
> root /home/trinex.ru/public_html;
> error_page 404 = @fallback;
> charset utf-8;
> access_log off;
> expires 30d;
> }
>
> ...
> }
>
> Обнаружил такую вот неприятную
> проблему (nginx 0.*, 1.*):
> есть форма: http://trinex.ru/data.php
> Она отправляется постом и имеет Content-Type:
> multipart/form-data, запрос через nginx
> проксируется на apache+php, в котором данные
> POST просто выводятся на страницу.
> Иногда, и что характерно и удивительно
> в некоторых браузерах, эти данные
> ломаются. Эффект наблюдается в Firefox,
> InternetExplorer, в Chrome такого нет (версии
> браузеров последние на данный момент)
> Вот так это выглядит:
>
> [14]=>
> string(1) "0"
> [15]=>
> string(115) "0
> -----------------------\0-----1524538208863362381055335516
> Content-Disposition: form-data; name=\"id[]\"
>
> 166"
> [16]=>
> string(1) "0"
>
>
> Если убрать nginx и выставить наружу apache,
> то такой проблемы не наблюдается.
> Почему такое происходит, и как можно
> поправить эту неприятную ошибку?
> Возможно, проблема не в nginx?
Убедитесь pls, что проблема воспроизводится в nginx 1.0.8/1.1.6.
Недавно было несколько исправлений, касающихся приёма тела запроса
(правда - при специфических условиях).
Если воспроизводится - то нужно:
1. Debug log, см. http://wiki.nginx.org/Debugging.
2. Само тело запроса, как его получил бекенд (не результат обработки,
а именно тело в виде текста). Не знаю, можно ли его получить в
php, но в любом случае подойдёт полный tcpdump соединения между
nginx'ом и бекендом.
Maxim Dounin
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|