Проблема с проксированием(не работает 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