Nginx cache
vladimircape
nginx-forum at nginx.us
Fri Jan 10 18:27:34 UTC 2014
Сайт написан на php фреймворке yii, т.е. все запросы проходят через
index.php
У меня установлена связка Fedora 16(nginx php5-fpm)
настройл кэширование, но некорректно работает с авторизованными
пользователями.
Некоторые пишут что вообще почти не реально это настройть.
Вот часть настройки
set $no_cache 0;
if ($request_method = POST)
{
set $no_cache 1;
}
#Don't cache if the URL contains a query string
if ($query_string != "")
{
set $no_cache 1;
}
#Don't cache the following URLs
if ($request_uri ~*
"/(api/|login|logout|corporate/login|corporate/logout)")
{
set $no_cache 1;
}
#Don't cache if there is a cookie called PHPSESSID
if ($http_cookie = "PHPSESSID")
{
set $no_cache 1;
}
location ~ \.php$ {
fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;
fastcgi_pass php-fpm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/site/index.php;
include fastcgi_params;
try_files $fastcgi_script_name =404;
fastcgi_cache nginx_webpy_cache;
fastcgi_cache_valid 200 301 302 304 2m;
fastcgi_cache_key
"$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri|$cookie_login_id";
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
fastcgi_hide_header "Set-Cookie";
}
location ~* \.(ico|js|txt|jpg|jpeg|png|css|pdf)$ {
root /srv/www/site;
access_log off;
expires 1h;
add_header Pragma public;
add_header Cache-Control "public";
}
Авторизованным пользователем выхожу через logout , а потом если просто
ввести адресс заходит под тем же логином,
PHPSESSID 9ef4fjlop3udf37kghooi040d7
и
6e8789174e281f8ed80a55570a092d9d
b64cbbf745b4e05f7fb188e...i:2;i:86400;i:3;a:0:{}}
кука типа не удаляется при кэшировании.
6e8789174e281f8ed80a55570a092d9d
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,246251,246251#msg-246251
Подробная информация о списке рассылки nginx-ru