ПРОЕКТЫ 


  АРХИВ 


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: Проблема с proxy_store/proxy _pass при не хватке мес та в хранилище



Поддерживаю! Мои 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




 




Copyright © Lexa Software, 1996-2009.