Re: Проксирование с кэшем из CDN

2020-08-04 Пенетрантность Raice
Спасибо, нагуглил, прочитал. Работает, но не сохраняет файлы. Я так понимаю,
это нужно как-то дополнительно прикручивать? Не подскажете, в какую сторону
копать?

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,288966,288971#msg-288971

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

Re: Проксирование с кэшем из CDN

2020-08-04 Пенетрантность fox
https://nginx.org/ru/docs/http/ngx_http_core_module.html#try_files

05.08.2020 11:04, Raice пишет:
> Интересная идея, спасибо! Выкачивать можно многопоточной арией, если что. 
> Не могли бы Вы пояснить пример конфига? Я еще не очень в nginx, не понял его
> 
> Posted at Nginx Forum: 
> https://forum.nginx.org/read.php?21,288966,288968#msg-288968
> 
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
> 

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

Re: Проксирование с кэшем из CDN

2020-08-04 Пенетрантность Raice
Попробовал Ваш конфиг, да, он выкачивает с сервера, но в папке
/var/www/cache не сохраняет

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,288966,288969#msg-288969

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

Re: Проксирование с кэшем из CDN

2020-08-04 Пенетрантность Raice
Интересная идея, спасибо! Выкачивать можно многопоточной арией, если что. 
Не могли бы Вы пояснить пример конфига? Я еще не очень в nginx, не понял его

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,288966,288968#msg-288968

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

Re: Проксирование с кэшем из CDN

2020-08-04 Пенетрантность fox
А если сделать так: парсить логи доступа (/var/www/proxy-access.log) на
предмет скачивания файлов. Внешним скриптом/программой да хоть wget с
ключом -c выкачивать файлы и складывать в папку /var/www/cache

Конфиг:

location / {
root /var/www/cache;
try_files $uri @proxy;
}

location @proxy {
proxy_pass http://cdnhost.tld$request_uri;
access_log /var/www/proxy-access.log;
}

Nginx будет сначала пытаться брать из локального "кеша", если не
получилось - выкачает с сервера.

Недостатки: "кеш" не протухает (может быть достоинством) и может устареть.


05.08.2020 00:44, Raice пишет:
> Добрый день! Подскажите, пожалуйста, как правильно настроить проксирование с
> кэшем из CDN. Задача такая: есть CDN, с него нужно скачивать достаточной
> большой объем информации, но это достаточно дорого обходится, поэтому
> появилась такая мысль - поднять прокси на nginx, который будет проксировать
> запросы на CDN и кэшировать их. Файлы там статика, меняются крайне редко и
> размер файла может быть 200Гб и выше. Хотелось бы чтобы с CDN закачка через
> прокси шла только один раз, т.е. чтобы скачивал сам nginx и потом раздавал.
> Я тут промучился, сначала с rh-nginx114 - с ним толком не работало. Файлы в
> несколько ГБ вроде работали, 50ГБ - постоянные обрывы и т.д. Поставил 1.18
> из оригинального репозитория - вроде дело пошло лучше, но хотелось бы
> убедиться, что все сделал правильно. Обычное кэширование мне не подходило,
> т.к. хосты начинают качать одновременно и получалось, что т.к. файлы большие
> все равно почти все уходило на CDN. Решил сделать через слайсы. Кэш вроде
> наполняется. 
> 
> http {
> log_format  main  '$remote_addr - $remote_user [$time_local] "$request"
> '
>   '$status $body_bytes_sent "$http_referer" '
>   '"$http_user_agent" "$http_x_forwarded_for"';
> 
> access_log  /var/log/nginx/access.log  main;
> 
> sendfileon;
> tcp_nopush  on;
> tcp_nodelay on;
> keepalive_timeout  65;
> types_hash_max_size 2048;
> 
> proxy_cache_path /data/nginx/cache keys_zone=mycache:100m levels=1:2
> max_size=1500g inactive=7d use_temp_path=off;
> proxy_buffering   on;
> proxy_buffer_size 4k;
> proxy_buffers 256 4k;
> 
> log_format cache_status '[$time_local] $remote_addr  "$request"
> $upstream_cache_status';
> access_log /var/log/nginx/cache_access.log cache_status;
> 
> gzip on;
> gzip_disable "msie6";
> 
> gzip_proxied any;
> 
> include   /etc/nginx/mime.types;
> default_type  application/octet-stream;
> 
> include /etc/nginx/conf.d/*.conf;
> 
> }
> 
> server {
> listen 81;
> resolver 172.17.19.10;
> location / {
> limit_rate 30m;
> proxy_read_timeout 3600;
> 
> proxy_cache mycache;
> proxy_pass http://cdnhost.tld$request_uri;
> 
> slice  30m;
> 
> proxy_cache_key $host$uri$is_args$args$slice_range;
> 
> 
> proxy_set_header   Range $slice_range;
> proxy_http_version 1.1;
> 
> 
> proxy_hide_header ETag;
> 
> proxy_cache_valid  200 206 301 302 7d;
> proxy_cache_valid 404  1m;
> 
> proxy_set_headerHost cdnhost.tld
> 
> proxy_ignore_headers "Set-Cookie";
> proxy_ignore_headers Cache-Control;
> 
> proxy_temp_path /data/nginx/temp;
> }
> }
> 
> 
> Подскажите, все ли правильно сделал? Будет ли работать так, как нужно?
> 
> Posted at Nginx Forum: 
> https://forum.nginx.org/read.php?21,288966,288966#msg-288966
> 
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
> 

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

Проксирование с кэшем из CDN

2020-08-04 Пенетрантность Raice
Добрый день! Подскажите, пожалуйста, как правильно настроить проксирование с
кэшем из CDN. Задача такая: есть CDN, с него нужно скачивать достаточной
большой объем информации, но это достаточно дорого обходится, поэтому
появилась такая мысль - поднять прокси на nginx, который будет проксировать
запросы на CDN и кэшировать их. Файлы там статика, меняются крайне редко и
размер файла может быть 200Гб и выше. Хотелось бы чтобы с CDN закачка через
прокси шла только один раз, т.е. чтобы скачивал сам nginx и потом раздавал.
Я тут промучился, сначала с rh-nginx114 - с ним толком не работало. Файлы в
несколько ГБ вроде работали, 50ГБ - постоянные обрывы и т.д. Поставил 1.18
из оригинального репозитория - вроде дело пошло лучше, но хотелось бы
убедиться, что все сделал правильно. Обычное кэширование мне не подходило,
т.к. хосты начинают качать одновременно и получалось, что т.к. файлы большие
все равно почти все уходило на CDN. Решил сделать через слайсы. Кэш вроде
наполняется. 

http {
log_format  main  '$remote_addr - $remote_user [$time_local] "$request"
'
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

sendfileon;
tcp_nopush  on;
tcp_nodelay on;
keepalive_timeout  65;
types_hash_max_size 2048;

proxy_cache_path /data/nginx/cache keys_zone=mycache:100m levels=1:2
max_size=1500g inactive=7d use_temp_path=off;
proxy_buffering   on;
proxy_buffer_size 4k;
proxy_buffers 256 4k;

log_format cache_status '[$time_local] $remote_addr  "$request"
$upstream_cache_status';
access_log /var/log/nginx/cache_access.log cache_status;

gzip on;
gzip_disable "msie6";

gzip_proxied any;

include   /etc/nginx/mime.types;
default_type  application/octet-stream;

include /etc/nginx/conf.d/*.conf;

}

server {
listen 81;
resolver 172.17.19.10;
location / {
limit_rate 30m;
proxy_read_timeout 3600;

proxy_cache mycache;
proxy_pass http://cdnhost.tld$request_uri;

slice  30m;

proxy_cache_key $host$uri$is_args$args$slice_range;


proxy_set_header   Range $slice_range;
proxy_http_version 1.1;


proxy_hide_header ETag;

proxy_cache_valid  200 206 301 302 7d;
proxy_cache_valid 404  1m;

proxy_set_headerHost cdnhost.tld

proxy_ignore_headers "Set-Cookie";
proxy_ignore_headers Cache-Control;

proxy_temp_path /data/nginx/temp;
}
}


Подскажите, все ли правильно сделал? Будет ли работать так, как нужно?

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

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

Re: аккуратное выведение бекенда на стримах

2020-08-04 Пенетрантность Илья Шипицин
вт, 4 авг. 2020 г. в 19:24, Gena Makhomed :

> On 04.08.2020 17:04, Илья Шипицин wrote:
>
> >> А что мешает просто убрать сервер из конфига и сделать reload?
> >> Ранее усановленные соединения доработают, новые будут
> >> устанавливаться только к бэкендам из новой конфигурации.
>
> > пожалуй, что можно и так.
> > мы так раньше делали, и поскольку мы не контролировали сколько у нас
> > worker-ов (а на каждый релоад запускается новый набор), то время от
> времени
> > ловили out of memory.
>
> если добавить в конфиг директиву worker_shutdown_timeout 60s;
> - разве это не поможет избавиться от ошибок out of memory ?
> и/или делать релоад nginx не чаще чем раз в минуту.
>

позволит. только установленные подключения порвутся


>
> --
> Best regards,
>   Gena
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: аккуратное выведение бекенда на стримах

2020-08-04 Пенетрантность Gena Makhomed

On 04.08.2020 17:04, Илья Шипицин wrote:


А что мешает просто убрать сервер из конфига и сделать reload?
Ранее усановленные соединения доработают, новые будут
устанавливаться только к бэкендам из новой конфигурации.



пожалуй, что можно и так.
мы так раньше делали, и поскольку мы не контролировали сколько у нас
worker-ов (а на каждый релоад запускается новый набор), то время от времени
ловили out of memory.


если добавить в конфиг директиву worker_shutdown_timeout 60s;
- разве это не поможет избавиться от ошибок out of memory ?
и/или делать релоад nginx не чаще чем раз в минуту.

--
Best regards,
 Gena

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

Re: аккуратное выведение бекенда на стримах

2020-08-04 Пенетрантность Илья Шипицин
вт, 4 авг. 2020 г. в 17:30, Maxim Dounin :

> Hello!
>
> On Tue, Aug 04, 2020 at 05:14:45PM +0500, Илья Шипицин wrote:
>
> > вижу такую штуку. есть проксирование на стримах на 5 серверов. я хочу
> > вывести из эксплуатации 1-й. чтобы запросы доработали.
> >
> > я каким-то образом делаю шаманство и говорю "если это SYN, то его надо
> на 4
> > сервера, а если это установленное с 1-м, ок, кидаем пакетики на 1-й".
> потом
> > когда горшочек перестает варить, я физически выключаю 1-й.
> >
> > можно что-то такое на SYN-ах намутить ? на уровне идеи вроде норм. по
> > реализации ?
>
> А что мешает просто убрать сервер из конфига и сделать reload?
> Ранее усановленные соединения доработают, новые будут
> устанавливаться только к бэкендам из новой конфигурации.
>


пожалуй, что можно и так.
мы так раньше делали, и поскольку мы не контролировали сколько у нас
worker-ов (а на каждый релоад запускается новый набор), то время от времени
ловили out of memory.


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

Re: аккуратное выведение бекенда на стримах

2020-08-04 Пенетрантность Maxim Dounin
Hello!

On Tue, Aug 04, 2020 at 05:14:45PM +0500, Илья Шипицин wrote:

> вижу такую штуку. есть проксирование на стримах на 5 серверов. я хочу
> вывести из эксплуатации 1-й. чтобы запросы доработали.
> 
> я каким-то образом делаю шаманство и говорю "если это SYN, то его надо на 4
> сервера, а если это установленное с 1-м, ок, кидаем пакетики на 1-й". потом
> когда горшочек перестает варить, я физически выключаю 1-й.
> 
> можно что-то такое на SYN-ах намутить ? на уровне идеи вроде норм. по
> реализации ?

А что мешает просто убрать сервер из конфига и сделать reload?  
Ранее усановленные соединения доработают, новые будут 
устанавливаться только к бэкендам из новой конфигурации.

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

аккуратное выведение бекенда на стримах

2020-08-04 Пенетрантность Илья Шипицин
привет!

вижу такую штуку. есть проксирование на стримах на 5 серверов. я хочу
вывести из эксплуатации 1-й. чтобы запросы доработали.

я каким-то образом делаю шаманство и говорю "если это SYN, то его надо на 4
сервера, а если это установленное с 1-м, ок, кидаем пакетики на 1-й". потом
когда горшочек перестает варить, я физически выключаю 1-й.

можно что-то такое на SYN-ах намутить ? на уровне идеи вроде норм. по
реализации ?


Илья Шипицин
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru