ПРОЕКТЫ 


  АРХИВ 


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: rewrite и кеширование (proxy_sto re)



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

    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 mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.