Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: on demand proxy_store
On Wed, 2010-11-17 at 14:42 +0200, Olexander Shtepa wrote:
> > Всем добрый день.
> > Захотелось сделать зеркало debian и тп, но не полное, а по запросу с
> > юзерский серверов. В итоге хранить самый употребительный минимум
> > постоянно, остальное только некоторое время.
> >
> > Прочел про proxy_store/upstream но есть проблема - если я в апстриме
> > пропишу mirror.yandex.ru, то надо делать set_header на его хост, если я
> > в апстриме укажу, например 5 разных серверов, мне каким-то образом надо
> > знать как передать им правильный Host:...
> >
> > Кто-то уже пробовал реализовать такое?
>
> С целью поиграться создал у себя такую схему:
> nginx-0.7.67
>
> resolver 192.168.1.110;
>
> server {
> listen 192.168.1.4:80;
> server_name repo.local.priv;
>
> location ^~ /local/ {
> alias /data/repo/;
> }
>
>
> location ~ ^/fetch/([^/]+)(/.*)$ {
>
> internal;
>
> set $site $1;
>
> set $file $2;
>
> alias /data/repo_cache/$1$2;
>
> proxy_pass http://$site$file;
>
> proxy_store on;
>
> proxy_store_access user:rw group:rw all:r;
>
> proxy_temp_path /data/repo_cache_tmp;
>
> proxy_ignore_headers X-Accel-Redirect X-Accel-Expires Expires
> Cache-Control;
>
> }
>
>
>
> location ~ ^/([^/]+)(/.*)$ {
>
> set $site $1;
>
> set $file $2;
>
> root /data/repo_cache;
> error_page 404 = /fetch/$site$file;
> }
> }
>
> /data/repo - локальные файлы
> /data/repo_cache - закешированые файлы
> /data/repo_cache_tmp - каталок для временных файлов
>
> Обращение происходит по так:
> к локальным файлам -
> http://repo.local.priv/local/CentOS-5/i386/nginx-0.7.67-1.el5.centos.i386.rpm
> кеширующий запрос -
> http://repo.local.priv/mirror.centos.org/centos/5/updates/i386/RPMS/python-2.4.3-27.el5_5.3.i386.rpm
>
> Работает кеширование так:
> по УРЛУ
> http://repo.local.priv/mirror.centos.org/centos/5/updates/i386/RPMS/python-2.4.3-27.el5_5.3.i386.rpm
> проверяется файл
> /data/repo_cache/mirror.centos.org/centos/5/updates/i386/RPMS/python-2.4.3-27.el5_5.3.i386.rpm
> если его нету, то делается запрос
> http://mirror.centos.org/centos/5/updates/i386/RPMS/python-2.4.3-27.el5_5.3.i386.rpm
> и файл сохраняется.
>
> Из плюсов:
> - удобная и понятная иерархия закешированых файлов
> Из недостатков:
> - nginx екранирует символ + и другие. например
> libstdc++-4.1.2-48.el5.i386.rpm при закачке превращается в
> libstdc%2b%2b-4.1.2-48.el5.i386.rpm
> как боротся не придумал, просто вручную качаю через wget, благо таких
> файлов мало.
> - нету TTL, поетому все что может устареть чищу кроном
> _______________________________________________
Без апстрима я такое тоже делал, спасибо :). Просто хотел сделать
failover через апстрим, мало ли маршрут до яндекса ляжет :)
--
Vasiliy G Tolstov <v.tolstov@xxxxxxxxx>
Selfip.Ru
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|