Неверная обработка/передача POST запроса типа Content-Type: multipart/form-data
trinex
nginx-forum на nginx.us
Вт Окт 25 22:45:11 UTC 2011
Здравствуйте.
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?
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,217337,217337#msg-217337
Подробная информация о списке рассылки nginx-ru