Re: rewrite и кеширование (proxy_store)

Andrey Kravchenko a на livebb.ru
Пт Сен 2 18:36:25 UTC 2011


Кажется, решил проблему. Теперь сохраняет там, где положено. Спасибо:)

     server {
         listen       81;
         server_name  i.example.com;
         default_type    image/jpeg;

         set $original_uri $uri;

         location / {
         root   c:/local/web/i;
         index  index.php index.html index.htm;
         rewrite    ^/([0-9]+)/([0-9]+)-([0-9]+)-([0-9]+)/(.+)$    
/$1/$2/$3/$4/$5;
         set $uri2 $uri;
         }


     proxy_store   c:/local/web/i$uri2;
     proxy_store_access   user:rw  group:rw  all:r;
     error_page 404 = /404/$original_uri;

         location /404/ {
             internal;
                     proxy_pass   http://example.com/picture/getimage;
             proxy_set_header    Host    example.com;
         }
}

On 9/2/2011 7:26 PM, Andrey Kravchenko wrote:
> Добрый день,
>
> На входе сервер получает URL вида 
> http://example.com/350/222--222--2/52-aa50d321.jpg
>
> Если файла нет (404) - я лезу на бекенд за ним, после чего кеширую его.
>
> Задача: закешировать файл в таком виде: 350/222/222/2/52-aa50d321.jpg 
> (соответственно искать файл нужно там же), а бекенду передать 
> оригинальный URL.
>
> Если не брать во внимание необходимость хранить файлы в нужной 
> структуре папок, то все хорошо работает так:
> server{
>         listen       81;
>         server_name  i.example.com;
>         default_type    image/jpeg;
>         location / {
>         root   c:/local/web/i;
>         index  index.php index.html index.htm;
>         set $original_uri $uri;
>         }
>
>     proxy_store   c:/local/web/i$original_uri;
>     proxy_store_access   user:rw  group:rw  all:r;
>     error_page 404 = /p/picture/getimage$original_uri;
>
>         location /p/ {
>             internal;
>                     proxy_pass   http://example.com:80/;
>             proxy_set_header    Host    example.com;
>         }
> }
>
>
> Как разрулить ситуацию с файловой структурой?
>
> Насколько понимаю, должно быть что-то в духе rewrite    
> ^/([0-9]+)/([0-9]+)-([0-9]+)-([0-9]+)/(.+)$    /$1/$2/$3/$4/$5 , но не 
> совсем понимаю, как это правильно использовать.
>



Подробная информация о списке рассылки nginx-ru