Re: проблема с кэшированием

Alex Smorodin agsmorodin на gmail.com
Ср Июн 9 16:13:19 MSD 2010


  Как сделать, чтобы при логине пользователь получил куку "session"  от
апача ?  И чтобы потом из кэша она ни к кому не попала. Извините за
сумбурность мыслей.
9 июня 2010 г. 15:00 пользователь Igor Sysoev <igor на sysoev.ru> написал:

> On Wed, Jun 09, 2010 at 02:42:48PM +0300, Alex Smorodin wrote:
>
> > Пробую так  (на 0.7.66 и на 0.8.4):
> >     location / {
> >         proxy_pass http://192.168.0.32:81;
> >         proxy_set_header  Host  domain.com;
> >         proxy_set_header  X-Real-IP  $remote_addr;
> >         proxy_next_upstream error timeout invalid_header http_500
> http_503;
> >         proxy_cache     one;
> >         proxy_no_cache  $cookie_session;
> >         proxy_cache_key
> > "$request_method|$is_args|$host|$request_uri|$cookie_session";
>
> Зачем $is_args ?
> Зачем $request_method ? Чтобы раздувать кэш через HEAD ?
>
> >         proxy_hide_header Set-Cookie;
> >         proxy_pass_header Set-Cookie;
> >         proxy_ignore_headers "Cache-Control" "Expires";
> >         proxy_cache_valid 200 301 302 304 1h;
> >     }
> >     location ~ (^/(page1|page2)) {
> >         proxy_pass http://192.168.0.32:81;
> >         proxy_set_header Host domain.com;
> >         proxy_set_header X-Real-IP $remote_addr;
> >         proxy_next_upstream error timeout invalid_header http_500
> http_503;
> >         proxy_cache off;
> >     }
> > Если указывать только proxy_hide_headers Set-Cookie  - session в браузер
> не
> > передается, попадает только в кэш (соответственно залогиниться нельзя).
> Если
> > после указать proxy_path_header Set-Cookie -  куку браузер получает, но
> она
> > все равно попадает в кэш и она же  отдаться в другом сеансе.  Как
> правильно
> > поставить эти параметры, чтобы переменная не попадала в кэш, но проходила
> от
> > бекэнда до браузера. Спасибо.
> > при логине кука session не  передается .   но зато страница кэшируется с
> > параметром "Set-Cookie: SESSION=c6070942bd95129dff2f34271169a226
> > я так понимаю если стоит no_cache $cookie_session то страница в любом
> случае
> > не должна попасть в кэш.
>
> $cookie_session - это кука в запросе клиента, а не Set-Cookie.
>
> Ответ всегда кэшируется полностью, в том числе и с куками.
> А вот что отдавать клиенту из кэша - это управляется
> proxy_hide_header/proxy_pass_header и по умолчанию куки из кэша
> не отдаются.
>
> Что я не понять, так это то, как вы хотите логинить клиента ответом
> из кэша ?
>
> > 7 июня 2010 г. 16:01 пользователь Igor Sysoev <igor на sysoev.ru> написал:
> >
> > > On Mon, Jun 07, 2010 at 03:06:54PM +0300, Alex Smorodin wrote:
> > >
> > > > Добрый день.  ubuntu с ядром 2.6.27-11-generic,nginx version: nginx/
> > > 0.7.65.
> > > > Хочу настроить кэширование в  nginx.  На апач пропускаю  все post
> > > запросы,
> > > > так же проверяю  куку session, она устанавливаетcя, когда
> пользователь
> > > > логинится, соответственно эти страницы мы не кэшруем.  Проблема в
> > > следующем:
> > > > в кэш иногда попадают внутренние страницы сайта, если не
> устанавливать
> > > > параметр "proxy_set_header X-Forwarded-For
> $proxy_add_x_forwarded_for;".
> > > > Если его добавить, все работает нормально.  Непонятно, как он может
> > > влиять?
> > > > Для проверки добавил в ключ proxy_cache_key куку session,  так вот
>  кука
> > > > попадает в кэш (хотя явно прописано условие не кэшировать страницу).
> > > > Вот конфиг:
> > > > server {
> > > >         listen 192.168.0.32:9081;
> > > >         server_name domain.com;
> > > >         access_log /var/log/nginx/domain.com/nginx-access.logcombined;
> > > >         error_log  /var/log/nginx/domain.com/nginx-error.log error;
> > > >         proxy_temp_path /var/cache/nginx/domain.com;
> > > >         location @nocached {
> > > >                 proxy_pass http://192.168.0.32:81;<
> > > http://192.168.0.32:81/;>
> > > >                 proxy_set_header Host domain.com;
> > > >                 proxy_set_header X-Real-IP $remote_addr;
> > > >                 proxy_set_header X-Forwarded-For
> > > $proxy_add_x_forwarded_for;
> > > >        }
> > > >         location / {
> > > >                 proxy_pass http://192.168.0.32:81;<
> > > http://192.168.0.32:81/;>
> > > >                 proxy_set_header Host  domain.com;
> > > >                 proxy_set_header  X-Real-IP  $remote_addr;
> > > >                 proxy_set_header X-Forwarded-For
> > > $proxy_add_x_forwarded_for;
> > > >                 proxy_next_upstream error timeout invalid_header
> http_500
> > > > http_503;
> > > >                if ($cookie_session) {
> > > >                         return 412;
> > > >                }
> > > >                if ($request_method = POST ) {
> > > >                         return 412;
> > > >                }
> > > >                 error_page 412 = @nocached;
> > > >                 proxy_cache one;
> > > >                 proxy_cache_key
> > > > "$request_method|$is_args|$host|$request_uri|$cookie_session";
> > > >                 proxy_hide_header "Set-Cookie";
> > > >                 proxy_ignore_headers "Cache-Control" "Expires";
> > > >                 proxy_cache_valid 200 301 302 304 1h;
> > > >        }
> > > > }
> > >
> > > Возьмите 0.8.40 и используйте такую конфигурацию:
> > >
> > >  server {
> > >     listen 192.168.0.32:9081;
> > >     server_name domain.com;
> > >     access_log /var/log/nginx/domain.com/nginx-access.log combined;
> > >     error_log  /var/log/nginx/domain.com/nginx-error.log error;
> > >     proxy_temp_path /var/cache/nginx/domain.com;
> > >
> > >      location / {
> > >          proxy_pass http://192.168.0.32:81;
> > >         proxy_set_header  Host  domain.com;
> > >         proxy_set_header  X-Real-IP  $remote_addr;
> > >          proxy_next_upstream error timeout invalid_header http_500
> > > http_503;
> > >          proxy_cache     one;
> > >         proxy_no_cache  $cookie_session;
> > >         proxy_cache_key domain.com$uri?$args;
> > >          proxy_hide_header "Set-Cookie";
> > >         proxy_ignore_headers "Cache-Control" "Expires";
> > >         proxy_cache_valid 200 301 302 304 1h;
> > >     }
> > >  }
> > >
> > >
> > > --
> > > Игорь Сысоев
> > > http://sysoev.ru
> > >
> > > _______________________________________________
> > > nginx-ru mailing list
> > > nginx-ru на nginx.org
> > > http://nginx.org/mailman/listinfo/nginx-ru
> > >
> >
> >
> >
> > --
> > С уважением,
> > Смородин Александр
> >
> >            mailto: agsmorodin на gmail.com
>
> > _______________________________________________
> > nginx-ru mailing list
> > nginx-ru на nginx.org
> > http://nginx.org/mailman/listinfo/nginx-ru
>
>
> --
> Игорь Сысоев
> http://sysoev.ru
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru
>



-- 
С уважением,
Смородин Александр

           mailto: agsmorodin на gmail.com
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100609/965d73cb/attachment-0001.html>


Подробная информация о списке рассылки nginx-ru