Re: Проблема с proxy_store/proxy_pass при не хватке места в хранилище

Vladimir Sopot jd at artdesign.ru
Fri Mar 13 17:03:51 MSK 2009


Поддерживаю! Мои 5 копеек.

Используется та же схема, но с переполнением не сталкивался, поскольку  
раз в N дней в момент минимальной нагрузки просто тупо стираю весь кэш  
(занятие на десяток секунд вместо более длительной проверки) и он  
посетпенно наполняется реально запрашиваемым контентом.

Но вопрос переполнения хранилища - хороший и отдавать контент не  
сохраняя на заполненные диски - отличное решение.

On Mar 13, 2009, at 1:48 PM, Andrey Zonov wrote:

> Добрый день.
>
> Для снижения нагрузки на бекенды было принято решение сохранять
> картинки на машинки с nginx-ом, регулярно чистить хранилище от самых
> не популярных картинок, т.е. фактически сделать кеширование.
>
> При не хватке места в хранилище - nginx отдаёт клиенту 200, с пустым
> телом, потому что тело не может сохранить.
> Можно ли как-то регулировать это поведение?
> В идеале хочется: если файл не удаётся сохранить, то тело, таки
> отдавать клиенту.
>
> nginx.conf:
> ...
> http {
> ...
>         proxy_connect_timeout   3;
>         proxy_buffering         on;
>         proxy_buffer_size       32k;
>         proxy_buffers           32 32k;
>         proxy_intercept_errors  off;
>         proxy_next_upstream     error timeout http_500;
>         proxy_store_access      user:rw  group:rw  all:r;
>         proxy_temp_path         /place/nginx/cache/spool 1 2;
>
>         upstream p0 {
>                 server w1.xxx.ru:5555;
>                 server w2.xxx.ru:5555;
> ...
>         }
> ...
>         server {
>                 listen          *:80 default;
>                 server_name     localhost;
>
>                 #-- main
>                 location / {
>                         if ( $request_uri ~
> ^/img\?id=([0-9])[0-9]*&rep=([0-9]) ) {
>                                 set $hash $1;
>                                 set $rep $2;
>                         }
>                         error_page 404 = @try;
>                 }
>
>                 #-- try local file
>                 location @try {
>                         root            /place/nginx/cache/$rep/$hash;
>                         access_log      /place/nginx/access_$rep.log  
> stat;
>                         try_files       $request_uri    @proxy$rep;
>                 }
>                 #-- proxy0
>                 location @proxy0 {
>                         access_log      /place/nginx/access_proxy_ 
> $rep.log stat;
>                         proxy_store
> /place/nginx/cache/$rep/$hash$request_uri;
>                         proxy_pass      http://p0;
>                 }
> ...
> }
>
> Если отключить proxy_buffering, то proxy_store совсем перестаёт  
> работать :(
>
> -- 
> Andrey Zonov






More information about the nginx-ru mailing list