Re[2]: nginx для отдачи больших файлов

shaman shaman712 at inbox.ru
Mon Feb 23 21:08:52 MSK 2009


Здравствуйте.

Файл отдается так: сначала идет обращение к скрипту, который делает
все необходимые проверки и потом выдает такое:

    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.$filename . '";');
    header("X-Accel-Redirect: /files/" . $filename);

Т.е. выполняется редирект на nginx, который и отдает файл. Я, надеюсь,
правильно делаю? :)

> Судя по конфигурационному файлу, вы все запросы прокачиваете через апач? А напрямую отдавать
> самим        nginx`ом       эти       самый       файлы       например
> http://blog.kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/ ?

>> Система FreeBSD 7, 4 Гб RAM.
>> nginx нужно использовать для отправки файлов самого разного размера: от 2-3 кб до 2-3 гб.
>> Пытался подобрать оптимальный конфиг, но не очень получается.
>> Вот, что у меня на данный момент:


>> user www www;
>> worker_processes 1;

>> worker_rlimit_nofile 10240;
>> worker_rlimit_sigpending 32768;
>> worker_priority 5;

>> error_log /.../nginx_error_log info;

>> events {
>>     worker_connections  20480;
>>     use kqueue;
>> }

>> http {
>>     default_type    application/octet-stream;

>>     log_format main
>>         '$remote_addr - $remote_user [$time_local] '
>>             '"$request" $status $bytes_sent '
>>         '"$http_referer" "$http_user_agent" '
>>         '"$gzip_ratio"';



>> access_log /.../nginx_access_log main;




>>     client_header_timeout  60;
>>     client_body_timeout    60;
>>     send_timeout           120;
>>     proxy_read_timeout     180;
>>     proxy_connect_timeout  60;
>>     proxy_send_timeout     180;


>>     msie_padding on;

>>     proxy_buffer_size          32k;

>>     proxy_buffers              64 512k;
>>     proxy_busy_buffers_size    1024k;
>>     proxy_temp_file_write_size 1024k;

>>     gzip on;
>>     gzip_min_length  10240;
>>     gzip_buffers     32 64k;
>>     gzip_types       text/html application/x-javascript text/css text/xml
>> text/plain;

>>     client_header_buffer_size    4k;
>>     client_max_body_size 120000000;
>>     large_client_header_buffers  16 8k;

>>     sendfile       on;
>>     tcp_nopush     on;
>>     tcp_nodelay    on;

>>     output_buffers   32 256k;
>>     postpone_output  1460;

>>     lingering_time     30;
>>     lingering_timeout  6;
>>     reset_timedout_connection  on;

>>     keepalive_timeout  20;
>>     optimize_server_names on;

>>     index index.html;

>>     server {
>>         listen       ххх.ххх.ххх.ххх:80;
>>         server_name  ххх;
>>         location / {

>>             proxy_pass         http://127.0.0.1:81/;
>>             proxy_redirect     off;
>>             proxy_set_header   Host             $host;
>>             proxy_set_header   X-Real-IP        $remote_addr;
>>         }
>>     }
>> }


>> Но проблемы следующие:
>> - большие паузы перед отдачей файла (сразу после старта сервера
>> отдает сразу же, через некоторое время начинаются приличные паузы).
>> - непонятная скорость отдачи файлов. файлы отдаются рывками,
>> скорость иногда запредельно низкая (10-15 Кб/с, когда нормальная 300-500 Кб/с).

>> Какие настройки нужно менять и где крутить?
>> Спасибо!











-- 
С уважением,
 shaman                          mailto:shaman712 at inbox.ru






More information about the nginx-ru mailing list