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

Andrey Kravchenko a на livebb.ru
Пт Сен 2 16:26:46 UTC 2011


Добрый день,

На входе сервер получает 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