ПРОЕКТЫ 


  АРХИВ 


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]

Еще раз про кэширование



Здравствуйте Уважаемая рассылка.

Рискую во второй раз задать вопрос про кэширование средствами nginx.

Обрисую задачу.
Имеется сайт с изображениями, эти изображения подгоняются под размер
экранов мобильных телефонов.
Сейчас я скриптом генерирую картинку и отдаю пользоватею, а
сгенерированнаую картинку кладу в папочку, и при следующем обращении к
ней я смотрю наличие файла и отдаю его на прямую если он есть (ну
довольно банальная схема). Но от этого  хотел бы уйти, ибо в этой
папке скапливается громадное колличество файлов, хотя многие из них
запрашиваются всего один раз.
Хотелось бы чтобы сгенерированные картинки некоторое время хранились в
кэше nginx и по истечении времени удалялись.

Некоторые куски моего конфига

http {
...
        proxy_cache_path /usr/nginx/cache levels=1:2 keys_zone=zone1:10m
inactive=3600m max_size=1024m;
...
        server {
                listen IP:80;
                server_name ***.ru www.***.ru;

                location /t_img.php {

                        proxy_cache zone1;
                        proxy_cache_min_uses  1;

                        proxy_pass http://IP:8080;
                        proxy_redirect http://IP:8080/ /;
                        proxy_set_header Host $host;
                        proxy_set_header X-Forwarded-For 
$proxy_add_x_forwarded_for;
                        proxy_set_header X-Real-IP $remote_addr;
                }

                location ~* ^/files/t_img/ {
                
                #if (!-f $request_filename) {
                        rewrite 
^/files/t_img/([0-9]*)-([0-9]*)-(((?!\/).+)\.jpg)$
/t_img.php?id=$1&size=$2&img=$3  last;
                #}
                }

                location / {
                        proxy_pass http://IP:8080;
                        proxy_redirect http://IP:8080/ /;
                        proxy_set_header Host $host;
                        proxy_set_header X-Forwarded-For 
$proxy_add_x_forwarded_for;
                        proxy_set_header X-Real-IP $remote_addr;
                }
                location ~* 
^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$
{
                        root /usr/home/www/***.ru;
                        error_page 404 = @fallback;
                }
                location @fallback {
                        proxy_pass http://IP:8080;
                        proxy_set_header Host $host;
                        proxy_set_header X-Forwarded-For 
$proxy_add_x_forwarded_for;
                        proxy_set_header X-Real-IP $remote_addr;
                }
        }
}

t_img.php собственно обрабатывает пришедший от пользователя запрос и
отдает картинку, после чего кладет ее в папку.

При такой схеме у меня кэширование не работает, потому что я вижу что
файлы в папке как продолжали появляться, так и появляются, а в папке с
кэшем nginx создаются дирректории, но они пустые, в них нету временных
файлов.

Помогите нарисовать правильную схему работы.

--
С уважением, Аленсандр К.
aleksandr@xxxxxxxxxxxxx
JID: aleksandr@xxxxxxxxxxxxx


 




Copyright © Lexa Software, 1996-2009.