ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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:

> 
> Из недостатков:
>  - nginx екранирует символ + и другие. например 
> libstdc++-4.1.2-48.el5.i386.rpm при закачке превращается в 
> libstdc%2b%2b-4.1.2-48.el5.i386.rpm
>   как боротся не придумал, просто вручную качаю через wget, благо таких 
> файлов мало.

Модифицировал слегка Ваш вариант, для борьбы с плюсами:
в главном конфиге nginx:
  perl_set  $unescape  '
    sub {
      my $r = shift;
      my $ret = $r->uri;
      $ret =~ s/\/[a-zA-Z0-9\.]*//;
      return $ret;
    }
  ';


в конфиге зеркала:
  location ~ ^/fetch/([^/]+)(/.*)$ {
    internal;
    set $site $1;
    set $file $2;
    alias                /srv/www/$domain/$1$2;
    proxy_pass           http://$site$file;
    proxy_store          on;
    proxy_store_access   user:rw  group:rw  all:r;
    proxy_temp_path      /srv/www/mirror.selfip.ru/tmp;
    proxy_ignore_headers X-Accel-Redirect X-Accel-Expires Expires
Cache-Control;
  }

  location ~ ^/([^/]+)(/.*)$ {
    set $site $1;
    set $file $unescape;
    root       /srv/www/$domain;
    error_page 404 403 = /fetch/$site$file;
  }

Если кто-то предложит вариант без встроенного Perl буду рад :).
С апстримами пока что не пробовал еще...


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


 




Copyright © Lexa Software, 1996-2009.