Welcome! Log In Create A New Profile

Advanced

Замена busylock'ам для proxy_cache и proxy_store

November 30, 2011 04:53AM
Пробема поднималась неоднократно и у нас и у буржуев.
Кто не понимает о чем речь - ищите по 'nginx busylocks'.

workaround для proxy_cache:

http{
proxy_cache_path /cache keys_zone=localcache:10m;
limit_zone perUri $uri 10m;
}
server {
location /remote/ {
try_files $uri @fake @proxy-remote;
}
location @fake {
root /notexists;
}
location @proxy-remote {
limit_conn perUri 1;
proxy_cache localcache;
proxy_cache_valid any 999d;
proxy_cache_key "remote$request_uri"; # тут пилить под свои задачи
proxy_set_header Range ""; # обрезаем Range в этой секции, иначе не закэширует
proxy_pass upstream;
error_page 503 = @locked-remote;
}
location @locked-remote {
# тут пилить под свои задачи. один из вариантов такой:
proxy_buffering off;
proxy_pass upstream;
}
# по необходимости плодим локейшены по образу и подобию (@fake можно оставить общим для всех)
}

для удобства конфиг продублирован на http://pastie.org/private/q49fwnwruatcyvzxwbomcg

Для proxy_store то же самое, только без @fake и с правильным root в /remote/

Естественно это только концепт, который надо дальше пилить под свои задачи.
Как это неудивительно - работает.
Воистину, возможности nginx'а неисповедимы.
Если есть вопросы - добро пожаловать.

icq: 3016467, skype: imperial.roaming
Subject Author Posted

Замена busylock'ам для proxy_cache и proxy_store

c0re November 30, 2011 04:53AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 98
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready