nginx качает один и тот же файл в несколько коннектов с бэкенда

2017-06-06 Пенетрантность Yury Lyakh
День добрый, может кто сталкивался с проблемой закачки файлов с бэкенда 
параллельно в несколько потоков.

Есть мелкий конфиг ниже.
Клиенты приходят с запросами ренжовыми и обычными, если файл отсутствует в кеше 
он начинает качаться с бэкенда, но качается во столько нитей сколько клиентов 
запросило файл. В итоге трафик на бэкенде растет в прогрессии и все закономерно 
встает через пару минут.

применили:
proxy_cache_lock on;
и
proxy_cache_use_stale updating;
но ситуация не изменилась, все равно качается в множество нитей

Почистили полностью машину от временных файлов (temp файлы закачки находятся в 
кеше use_temp_path=off).
Запустили трафик, буквально через 10 секунд прошелся по кешу в поиске временных 
файлов, чтобы посмотреть их KEY в заголовке, видим что одновременно создались и 
качаются 177 временных файлов для одного по сути файла:

[root@upload-3 cache]# find -L ./ -type f -iname '*\.[0-9]*' | xargs head -n2 | 
grep -a ^KEY | sort | uniq -c
177 KEY: /ct/patches/wop_1.9.77.310044_ct/wop.ct_1.9.77.310044.pkg.001

самы файлы выглядят как:
...
-rw--- 1 nginx nginx  205168640 Jun  6 13:15 
./wop/1f/51/006afe023b4083e96128680af13b511f.000253
-rw--- 1 nginx nginx  209281024 Jun  6 13:15 
./wop/1f/51/006afe023b4083e96128680af13b511f.000254
-rw--- 1 nginx nginx  286048256 Jun  6 13:15 
./wop/1f/51/006afe023b4083e96128680af13b511f.000255
-rw--- 1 nginx nginx  671723520 Jun  6 13:15 
./wop/1f/51/006afe023b4083e96128680af13b511f.000257
-rw--- 1 nginx nginx  217743360 Jun  6 13:15 
./wop/1f/51/006afe023b4083e96128680af13b511f.000258
-rw--- 1 nginx nginx  239915008 Jun  6 13:15 
./wop/1f/51/006afe023b4083e96128680af13b511f.000259
-rw--- 1 nginx nginx  635768832 Jun  6 13:15 
./wop/1f/51/006afe023b4083e96128680af13b511f.000261



версия nginx-1.13.1

конфиг:
proxy_cache_path /var/lib/nginx/cache/wop  levels=2:2 keys_zone=wop:20m 
inactive=2d use_temp_path=off;

server {
listen 80;
listen [::]:80;
server_name dl-share.wop.net ;

proxy_cache wop;
proxy_ignore_client_abort on;

location / {
proxy_pass http://dl.wop.net ;
proxy_set_header Host   $proxy_host;
proxy_cache_lock on;
proxy_cache_lock_age 1d;
proxy_cache_lock_timeout 1d;
proxy_cache_use_stale error updating;
proxy_cache_key "$uri";
proxy_cache_revalidate on;
proxy_cache_valid 404 10s;
proxy_cache_valid 200 1h;
}
}

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

"195.242.151.17" "-" "-" "[06/Jun/2017:13:03:28 +]" "GET 
/ct/patches/wop_1.9.77.310044_ct/wop.ct_1.9.77.310044.pkg.001 HTTP/1.1" "206" 
"0" "-" "wdsa::Torrents/1.1 libtorrent/1.1.3.0" "0" "-" "http" 
"dl-share.wop.net " "81.114" "81.114" "235" 
"bytes=1744977920-1745043455" "[gn]" "MISS" "42008576" "91.213.124.60:80" "0" 
"0" "-" "-"
"195.242.151.17" "-" "-" "[06/Jun/2017:13:03:26 +]" "GET 
/ct/patches/wop_1.9.77.310044_ct/wop.ct_1.9.77.310044.pkg.001 HTTP/1.1" "206" 
"0" "-" "wdsa::Torrents/1.1 libtorrent/1.1.3.0" "0" "-" "http" 
"dl-share.wop.net " "121.167" "121.167" "235" 
"bytes=2059403264-2059468799" "[gn]" "MISS" "42008576" "91.213.124.60:80" "0" 
"0" "-" "-"

Ткните пожалуйста в документацию где я не дочитал, что вообще происходит?..
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: real_ip on Azure Cloud + Application Gateway

2017-06-06 Пенетрантность Maxim Dounin
Hello!

On Tue, Jun 06, 2017 at 04:12:20PM +0300, Sergey Kagansky wrote:

> Добрый день!
> Пользуемся Nginx в облаке Azure
> В качестве лоадбалансера перед несколькими Nginx серверами используем
> Application Gateway.
> Проблема в том, что он в заголовке X-Forwarded-For передаёт IP:PORT (пример
> ниже)
> Вопрос: можно это как то излечить и получить в логах Nginx правильный адрес
> клиента, потому как в данной ситуации Nginx подставляет адрес балансера
> который передается без порта
> 
> X-FORWARDED-PROTO: https
> X-FORWARDED-PORT: 443
> *X-Forwarded-For: 13.93.225.14:1217 *

Если вы используете актуальную версию nginx'а, то всё должно 
работать со штатным модулем realip.  Порты в X-Forwarded-For 
поддерживаются начиная с nginx 1.11.0, см.  
http://nginx.org/ru/docs/http/ngx_http_realip_module.html.

-- 
Maxim Dounin
http://nginx.org/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

real_ip on Azure Cloud + Application Gateway

2017-06-06 Пенетрантность Sergey Kagansky
Добрый день!
Пользуемся Nginx в облаке Azure
В качестве лоадбалансера перед несколькими Nginx серверами используем
Application Gateway.
Проблема в том, что он в заголовке X-Forwarded-For передаёт IP:PORT (пример
ниже)
Вопрос: можно это как то излечить и получить в логах Nginx правильный адрес
клиента, потому как в данной ситуации Nginx подставляет адрес балансера
который передается без порта

X-FORWARDED-PROTO: https
X-FORWARDED-PORT: 443
*X-Forwarded-For: 13.93.225.14:1217 *

Заранее всем благодарен

-- 
 
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru