Избирательное кеширование разделов в nginx

D
На сайте с 28.06.2008
Offline
1114
652

Перевожу некоторые сайт на кеширование Нгихс, с авторизацией разобрался, для авторизованых не кеширует, все работает.

Но вот для одного проекта нужно установить разное значение по времени на кеширование определенных разделов сайта, а некоторые разделы вообще не надо кешировать. Как это сделать?

в идеале хотелось бы так, если возможно конечно:

/razdel-1*

proxy_cache_valid 200 301 302 304 24h;

/razdel-2*

proxy_cache_valid 200 301 302 304 1h;

/razdel-3*

proxy_no_cache

esetnod
На сайте с 16.07.2009
Offline
134
#1

Ну, собственно, вы уже ответили на свой вопрос: нужные локейшены и proxy_cache_valid, и не забыть про общий inactive в зоне.

Или же с бэкэнда можно возвращать X-Accel-Expires.

Быстрый хостинг на SSD от $0.99 (http://just-hosting.ru/) | OpenVZ (http://just-hosting.ru/vds.html) и KVM (http://just-hosting.ru/vds-kvm.html) VDS от $7.95
D
На сайте с 28.06.2008
Offline
1114
#2

вот я и не могу найти примеров конфига под эту задачу

esetnod
На сайте с 16.07.2009
Offline
134
#3

location /razdel-1 {

proxy_cache_valid 200 301 302 304 24h;

}

location /razdel-3 {

proxy_cache off;

}

D
На сайте с 28.06.2008
Offline
1114
#4

location /razdel-1 эта функция позволит кешировать ВСЕ страницы раздела? такие тоже?

site.ru/razdel-1/454-sfsdfsfs

esetnod
На сайте с 16.07.2009
Offline
134
#5

Да, всё что дальше префикса, попадет под этот location.

D
На сайте с 28.06.2008
Offline
1114
#6

что-то делаю не так - получаю 404 ошибку в нужных разделах...

вот как я делаю.

1. в конфиге Нгихс в локейшене нужного сайта прописано

include /etc/nginx/cache_logic/site.conf;

2. в конфиге site.conf прописано вот что:

proxy_cache one;
proxy_cache_key "$scheme://$host$request_uri";

# Ответ не будет браться из кеша если proxy_cache_bypass не пустое и неравно 0
proxy_cache_bypass $cookie_14d050ebc3ffa4b0ce23e2e09a84d7c8;
# То, что отдается залогиненому пользователю, не писать в кеш
proxy_no_cache $cookie_14d050ebc3ffa4b0ce23e2e09a84d7c8;

proxy_ignore_headers Set-Cookie Cache-Control Expires;

location /razdel {
proxy_cache_valid 200 301 302 304 24h;
}

location /razdel2 {
proxy_cache off;
}
esetnod
На сайте с 16.07.2009
Offline
134
#7

В этих локейшенах также должны быть proxy_pass, fastcgi_pass или root/alias (в зависимости от того, что используете).

D
На сайте с 28.06.2008
Offline
1114
#8

потерто, вроде все работает, спс

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий