Проблема с проксированием(не работает proxy buffering)

unclead nginx-forum на nginx.us
Пн Фев 1 17:20:50 MSK 2010


Доброго времени суток!

В свое время была поставлена задача по настройке проксирования отгрузок контента с портала партнера.
Настроить само проксирование не составило труда, а вот в детальными настройками возникли проблемы.

Необходимо, чтобы в случае если юзер на своей стороне разрывает соединение nginx не продолжал выкачивать контент с сервера партнеров.

Судя по документации за это  отвечает параметр proxy_buffering off;
Но на практике вышло, что когда абонент рвет соединение, прокси(в данном случае nginx) выкачивает еще часть данных, но они уже не передаются юзеру.
В итоге у нас в логе одно кол-во переданных байт, у партнера это значение больше.

Т.е. исходящий трафик меньше входящего.
К сожалению не смог найти в сети аналогичных топиков.

Конфигурация location выглядит так

        location /trna/1043/ {

                 proxy_buffering off;
                 proxy_ignore_client_abort off;
                 proxy_max_temp_file_size 0;
                 keepalive_timeout 0;
                 reset_timedout_connection on;
                 proxy_buffer_size 1k;
#                lingering_time     0;
#                lingering_timeout  0;
                 tcp_nopush on;
#                tcp_nodelay on;


                 more_clear_headers 'Expires';
                 add_header  Cache-control 'no-store,no-cache,must-revalidate';
                 add_header  Expires       "Wed, 28 Oct 2009 06:45:35 GMT";
                 proxy_pass  http://spaces.ru/;
        }

Конфиг http выглядит так
===============================================
user nginx nginx;
worker_processes 2;
worker_rlimit_nofile 8192;

#error_log /var/log/nginx/error_log info;

events {
#       worker_connections  8192;
        worker_connections  2048;
        use epoll;
}

http {
        include         /etc/nginx/mime.types;
        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"';

        server_names_hash_max_size 1024;

        log_format  todatabase  '       $http_host      $server_name    $time_local     $remote_addr    $request        $status $body_bytes_sent     $bytes_sent     $request_length $http_msisdn    -       -       -       $http_user_agent        -';

        client_header_timeout   10m;
        client_body_timeout     10m;
        send_timeout            10m;

        connection_pool_size            256;
        client_header_buffer_size       1k;
        large_client_header_buffers     4 2k;
        request_pool_size               4k;

        gzip on;
        gzip_min_length 1100;
        gzip_buffers    4 8k;
        gzip_types      text/plain text/html;

        output_buffers  1 32k;
        postpone_output 1460;

        sendfile        on;
        tcp_nopush      on;
        tcp_nodelay     on;

        keepalive_timeout       75 20;

        ignore_invalid_headers  off;

        index index.html;

Как пример приведу пару строк из логов:

вырезка из нашего лога(жирным выделено кол-во байт)
nginx:  spgprs.ru       spgprs.ru       29/Jan/2010:16:30:05 +0300      217.66.146.33   GET /****/9541622434979532/128/1711957/Ruki_vverh_-_Territoriya_(MS_Fanta_edit).mp3 HTTP/1.1        200     33819   34189   1222    -       -       -       -       Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5530c-2/11.0.054; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Safari/525  -
nginx:  spgprs.ru       spgprs.ru       29/Jan/2010:16:31:23 +0300      217.66.146.33   GET /*****/9541622434979532/128/1711957/Ruki_vverh_-_Territoriya_(MS_Fanta_edit).mp3 HTTP/1.1        200     59659   60029   1222    -       -       -       -       Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5530c-2/11.0.054; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Safari/525  -
nginx:  spgprs.ru       spgprs.ru       29/Jan/2010:16:33:01 +0300      217.66.146.33   GET /*****/9541622434979532/128/1711957/Ruki_vverh_-_Territoriya_(MS_Fanta_edit).mp3 HTTP/1.1        200     95019 95389   1222    -       -       -       -       Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5530c-2/11.0.054; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Safari/525  -


а вот теже файлы но уже в логе партнера
TEHb, 1/29/2010 7:39:29 PM:
195.133.69.130 - - [29/Jan/2010:16:30:05 +0300] "GET /mmm/9541622434979532/128/1711957/Ruki_vverh_-_Territoriya_(MS_Fanta_edit).mp3 HTTP/1.0" 200 225619 "http://spaces.ru/music/?sid=9724956234329541&read=1711957&from=search&word=%D1%80%D1%83%D0%BA%D0%B8%20%D0%B2%D0%B2%D0%B5%D1%80%D1%85" "Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5530c-2/11.0.054; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Safari/525" 3.692 10.0.0.5:8080 0.787
195.133.69.130 - - [29/Jan/2010:16:31:23 +0300] "GET /mmm/9541622434979532/128/1711957/Ruki_vverh_-_Territoriya_(MS_Fanta_edit).mp3 HTTP/1.0" 200 229963 "http://spaces.ru/music/?sid=9724956234329541&read=1711957&from=search&word=%D1%80%D1%83%D0%BA%D0%B8%20%D0%B2%D0%B2%D0%B5%D1%80%D1%85" "Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5530c-2/11.0.054; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Safari/525" 67.627 10.0.0.5:8080 0.014
195.133.69.130 - - [29/Jan/2010:16:33:02 +0300] "GET /mmm/9541622434979532/128/1711957/Ruki_vverh_-_Territoriya_(MS_Fanta_edit).mp3 HTTP/1.0" 200 185291 "http://spaces.ru/music/?sid=9724956234329541&read=1711957&from=search&word=%D1%80%D1%83%D0%BA%D0%B8%20%D0%B2%D0%B2%D0%B5%D1%80%D1%85" "Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5530c-2/11.0.054; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Safari/525" 146.648 10.0.0.5:8080 0.028


Разница почти в 100кб на каждом запросе.  За час выходит разница в 200-300 Мб.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,48665,48665#msg-48665




Подробная информация о списке рассылки nginx-ru