циклический ресет при закачке файлов

Vladimir Fursin fursin at optima.ua
Tue Mar 31 10:43:16 MSD 2009


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

Для раздачи мультимедийного контента используется следующая
конфигурация - nginx в режиме прокси + апач, выполняющий
в PHP задачу авторизации. Если авторизация успешна, управление
возвращается в nginx, который через internal location отдает файл
клиенту.
        Просматривая логи nginx обнаружил многократно повторяющиеся
записи скачивания с одного и того же URL, одним и тем же клиентским
IP, одной и той же длины. Пример :

2009-03-29T04:49:00+0300 XX.XX.XX.XX - - [29/Mar/2009:04:48:59
+0300] "GET /fetch/mp3/hch...Wbg==/kreschenie.mp3 HTTP/1.1" 200 33396
"Mozilla/4.0(compatible; MSIE 5.00; Windows 98)"

Такого вида записи в логах повторяются с интервалом 1-2 сек и
могут составлять до 30% всех записей лога! С одного и того же
клиентского адреса такие повторяющиеся запросы могут идти сутками.
Причем это не один клиент, таких много - с разных сетей при доступе
на сервера в разных городах, т.е. явление массовое.

Пытался смотреть на то, что происходит, tcpdump'ом - видно, что
после клиентского GET-запроса сервер отвечает HTTP-заголовком,
начинает передавать содержимое файла и после второго посланного
пакета клиент присылает FIN и RST, после чего все повторяется заново.

Кто нибудь сталкивался с подобным? Благодарен за любую подсказку -
куда копать?

P.S. nginx 0.6.35, fedora c 5-ой по 8-ую

Конфиг:

worker_processes  8;
worker_rlimit_nofile 8192;
events {
    worker_connections  2048;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    access_log logs/access.log combined;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  example.com;
        rewrite ^/fetch/mp3/(.*)$ /nginx.php?path=$remote_addr-$1 last;
        error_page      404  /404.html;
        location = /404.html {
            root        html;
        }
        location /home {
            root        html;
        }
        location / {
            proxy_pass         http://127.0.0.1:8888;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            client_max_body_size       10m;
            client_body_buffer_size    128k;
            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;
            proxy_buffer_size          4k;
            proxy_buffers              4 16k;
            proxy_busy_buffers_size    32k;
            proxy_temp_file_write_size 32k;
        }
        location /data-5 {
            root /;
            internal;
        }
    }
}


С уважением, Владимир.
-- 
mailto:fursin at optima.ua






More information about the nginx-ru mailing list