Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
proxy cache по cookie
- To: nginx-ru@xxxxxxxxx
- Subject: proxy cache по cookie
- From: "n-sw-bit" <nginx-forum@xxxxxxxx>
- Date: Tue, 13 Jul 2010 14:33:43 -0400
- Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mickey.jlkhosting.com; s=x; h=Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To:Date; bh=hwNEmdKOlKRNyMlKEJNeb5+PlJr3ugyZoRhIfSkEbBY=; b=lpJJVtjV6qH2k9TdjJTRGIA64gIibN/qMUvPIwE5Y8ftT85RwiHasepGWllp3iAHnB4RliDSTc8Xgod5qCsHzksOJ9dP0KmI2zZz6X77iuefW5r3UYGO06QSEj01ffHc;
nginx/0.7.65
Используется в качестве кеширующего
прокси перед Apache c mod_php.
При наличии пользовательской куки
работает апач, при её отсутствии -
отдаётся кеш.
Проблема в том, что nginx периодически
кладёт в кеш странички, отдаваемые
[u]зарегистрированным[/u] пользователям.
Т.е. впервые зашедший на сайт человек
видит надпись "Привет, username" на
[b]одной/нескольких[/b] из страниц сайта.
Как можно заставить nginx кешировать для
гостей только те страницы, которые и
должны отдаваться гостям?
Заранее спасибо за ответ.
Основной учаток конфига:
[code]proxy_cache_path /tmp/nginx-cache levels=1:2 keys_zone=one:20m
inactive=7d max_size=1024m;
proxy_temp_path /tmp/nginx-temp;
location / {
#здесь мы фильтруем наших залогиненых
пользователей
if ($cookie_BITRIX_SM_AUTH) { return 412; }
if ($cookie_BITRIX_SM_UIDH) { return 412; }
#submit различных форм
if ($request_method != GET) { return 412; }
#некешируемые GET запросы
if ($request_uri ~ set_city) { return 412; }
if ($request_uri ~ personal/order/make/) { return 412; }
if ($request_uri ~ 1c_exchange/) { return 412; }
if ($request_uri ~ action=BUY) { return 412; }
#хак для тестов
if ($request_uri ~ lm_nocache) { return 412; }
#return 412;
proxy_cache one;
proxy_pass http://127.0.0.1:81;
proxy_redirect default;
proxy_ignore_headers "Cache-Control" "Expires"; # Игнорируем
заголовки, относящиеся к кешированию,
полученные от Apache-сервера
proxy_hide_header "Set-Cookie";
proxy_pass_header Cookie;
proxy_cache_key
$cookie_BITRIX_SM_city|$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri;
proxy_cache_valid 200 301 302 304 10m;
proxy_cache_valid 503 5s;
proxy_cache_valid any 5s;
proxy_cache_use_stale http_502 http_503 http_504;
expires 1m;
add_header Cache-Control public;
}
location @backend {
proxy_pass http://127.0.0.1:81;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
error_page 404 = /404.php;
}
error_page 412 = @backend;
[/code]
Posted at Nginx Forum:
http://forum.nginx.org/read.php?21,108387,108387#msg-108387
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|