ПРОЕКТЫ 


  АРХИВ 


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]

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


 




Copyright © Lexa Software, 1996-2009.