Странности с proxy buffering и трансфером файлов больше 1ГБ
iotf
nginx-forum на nginx.us
Чт Сен 29 08:59:29 UTC 2011
Здравствуйте, Игорь!
Есть следующая конфигурация: Debian Squeeze
amd64, Apache 2.2.12 (бекэнд), nginx из apt nginx/0.7.67
(фронтэнд), конфиг файл:
server
{
listen x.x.x.x:443;
keepalive_timeout 60;
access_log /dev/null;
ssl on;
ssl_certificate cert.pem;
ssl_certificate_key key.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# Obtain host
if ($request_uri ~* "^/([^/]*)(.*)$")
{
set $host_parsed $1;
set $uri_parsed $2;
}
if ($uri_parsed = "")
{
set $uri_parsed "/";
}
location /
{
# Buffering
proxy_buffering on;
# Proxy specification
proxy_pass http://$host_parsed$uri_parsed;
proxy_set_header Host $host_parsed;
proxy_set_header HTTPS_TUNNEL_HOST $remote_addr;
proxy_set_header HTTPS_TUNNEL_SERVER "myserverid";
proxy_set_header HTTPS_PASSED_THROUGH "1";
# Debug headers
proxy_set_header DEBUG_URI_REQUESTED $request_uri;
proxy_set_header DEBUG_HOST_PARSED $host_parsed;
proxy_set_header DEBUG_URI_PARSED $uri_parsed;
}
}
Пока дело не доходит до файлов размера
1ГБ и более, все работает
безукоризненно. Для файлов более 1ГБ
происходит следующее: загружается
кусок от 1037 до 1700 мегабайт, после чего
nginx перестает отдавать контент. Средний
размер файла - 2-8ГБ. От протяженности
даунлоада по времени ничего не
меняется: тестировали на скоростях от
300кбайт/c до 12мбайт/c. В логах пусто.
Стоит отключить proxy_buffering - все работает.
Анализ путем использования strace
показал, что nginx буферизует не более
1024мб (отслеживается через дескрипторы
fd в proc). Свободного места на разделе, где
nginx хранит промежуточные данные более,
чем достаточно. Коронный вопрос: это
баг или я дурак?
С уважением,
Б.
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,216011,216011#msg-216011
Подробная информация о списке рассылки nginx-ru