Re: Bad file descriptor при посте картинки и включенной add before body
Maxim Dounin
mdounin на mdounin.ru
Вт Мар 23 14:14:58 MSK 2010
Hello!
On Tue, Mar 23, 2010 at 06:04:13AM -0400, Corsar wrote:
> Gentoo 64-х разрядная
> Nginx 0.7.64, через сокет привязал php-fpm 5.3.1
> В настройках виртуал-сервера прописан add_before_body с путем /path/some_file.php
> Постчу картинку, картинка закачивается, показывается, но вверху страницы имеем 502 ошибку.
> В логах nginx-а следующее:
> 2010/03/23 07:13:27 7043#0: *1554413 pread() failed, file "/var/tmp/nginx/client/0000000153" (9: Bad file descriptor) while sending request to upstream, client: 1.2.3.4, server: host.ru, request: "POST /upload.php? HTTP/1.1", subrequest: "/path/some_file.php", upstream: "fastcgi://unix:/var/run/php-fpm.sock:", host: "host.ru", referrer: "http://host.ru/upload.php"
>
>
> Такая-же проблема при связке nginx 0.6.32 + php-cgi 5.5.12 по IP на 32-х разрядном Debian-е.
Known issue. После отправки заголовков основного ответа - файл с
телом запроса закрывается (дабы не держать его на диске без нужды,
0.3.3+), а подзапросы его снова пытаются использовать. Workaround
- для подзапросов явно прописывать
proxy_pass_request_body off;
proxy_set_header Content-Length "";
а для fastcgi соответственно
fastcgi_pass_request_body off;
Т.е. в вашем случае как-то так:
location = /path/some_file.php {
fastcgi_pass_request_body off;
fastcgi_pass ...
...
}
Возможно для fastcgi ещё понадобится заменить fastcgi_param
CONTENT_LENGTH на:
fastcgi_param CONTENT_LENGTH 0;
Но может и без этого заработать, зависит от приложения.
Maxim Dounin
Подробная информация о списке рассылки nginx-ru