ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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


 




Copyright © Lexa Software, 1996-2009.