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

Александр Кобыченко aleksandr at kobychenko.ru
Tue Sep 8 02:21:11 MSD 2009


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

Рискую во второй раз задать вопрос про кэширование средствами 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 at kobychenko.ru
JID: aleksandr at kobychenko.ru


More information about the nginx-ru mailing list