Проксирование файлов более 4Гб

Denis Zhdanov Denis.Zhdanov at liga.ua
Thu Aug 13 15:32:06 MSD 2009


Привет всем!
Имеем nginx 0.7.61 на FreeBSD 6.2, который стоИт фронтендом перед апачем. 
Помимо динамических страничек на апаче лежат несколько больших файлов, в 
том числе несколько файлов более 4Гб (переложить файлы на фронтенд 
затруднительно по ряду причин). Мелкие файлы отдаются нормально, а вот с 
большими проблемы - при выключенной буферизации закачка сначала 
останавливается, а потом обрывается по таймауту через некотрое количество 
мегабайт. При этом в access.log - обычный файл с кодом возврата 200 -
192.168.7.6 - - [13/Aug/2009:13:43:37 +0300] "GET 
/files/47ccdaf4dd87/dvd.iso HTTP/1.1" 200 178847744 "-" "Opera/9.64 
(Windows NT 5.1; U; ru) Presto/2.1.1"
(сам dvd.iso при этом размером 4356636672 байт )
а в error.log - ничего.
При включенной буферизации работает нормально, но так как клиентов много и 
они медленные, то /var/spool/nginx/proxy_temp растет катастрофически 
быстро и за пару часов на /var кончается место. Буферами пробовал играться 
- не помогает.
Проксирую так - 

        location ~* 
\.cgi$|^/cgi-bin|^/check|^/download|^/index|^/files|^/beta {
            auth_basic  off;
            proxy_buffering off;
            proxy_pass  http://192.168.201.7:8000;
            proxy_set_header  Host  $host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For  $remote_addr;
        }

Пока поставил костыль в виде rewrite этих больших файлов непосредственно 
на апач на 8000 порт - но это некрасиво и не секурно.
Помогите плиз.


More information about the nginx-ru mailing list