Здравствуйте, Игорь!
Есть следующая конфигурация: 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 хранит промежуточные данные более, чем достаточно. Коронный вопрос: это баг или я дурак?
С уважением,
Б.