Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Кеширование по кукам для гостей форума на IPB (Invision Power Board)
- To: nginx-ru@xxxxxxxxx
- Subject: Кеширование по кукам для гостей форума на IPB (Invision Power Board)
- From: "daitepiva" <nginx-forum@xxxxxxxx>
- Date: Wed, 09 Jan 2013 02:15:42 -0500
- Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tigger.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=1JRXRWlGcNFx1BI8mS4FNunrY9NJ75/DWiULSQFrsJI=; b=mhb0EAsJkOAGJowvGRccNSAqxgVUgZS9kUF4AwP29WdKvbShrF2+RtbbiwfB5MyNvxuqizXRgrJVciUUdz9CRCXtkZ0SohEBOlS+21NCEa1JlazSiH1ECZdivOaKfMsG;
Приветствую.
Пытался сделать кеширование по наличию-отсутствию некоторых типичных кук
(member_id pass_hash session_id) для гостей форума на IPB 2.3 (Invision
Power Board). Вроде всё работало как надо - кешировалось только гостям,
файлы в папке кеша появлялись и удалялись как надо. Но появились серьёзные
проблемы - чужие страницы, сессии, хотя кеширование было настроено именно по
отсутствию всех ключевых куков - идентификатор пользователя, хеш пароля,
идентификатор сессии. На всякий случай включил эти куки в ключ объекта, но
там было пусто или нули, т.е. при наличии хотя бы одного из них ответ не
кешировался.
Включал эти переменные в логи - есть. Включал в логи переменную
upstream_cache_status, ничего аномального не заметил.
Толи какие-то особенности работы движка, толи я что-то накосячил в конфиге.
Вот конфиг в части, касающейся кеширования:
http {
...
proxy_cache_path /var/nginx/proxy_temp levels= keys_zone=dguests:100m
inactive=3m max_size=100m;
server {
...
proxy_cache_key
"$host$request_uri|$request_method|$cookie_member_id|$cookie_pass_hash";
proxy_cache_bypass $cookie_pass_hash $cookie_member_id
$cookie_session_id;
proxy_no_cache $cookie_pass_hash $cookie_member_id $cookie_session_id;
proxy_ignore_headers Expires Cache-Control Set-Cookie;
proxy_cache off;
location ~ \.php$ {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache dguests;
proxy_cache_valid 30s;
}
}
}
Пришлось включить Set-Cookie в proxy_ignore_headers, т.к. движок выдаёт её
гостям и страницы не кешировались вовсе.
Пробовал добавлять "proxy_hide_header "Set-Cookie";", но тогда не проходит
авторизация.
Вообще же задача в снижении нагрузки и, в идеале, повышение устройчивости к
ДДоС-атакам, за счёт кеширования страниц для гостей, а их у меня больше чем
пользователей, например, прямо сейчас онлайн 2700 гостей и 1600
пользователей.
Спасибо.
Posted at Nginx Forum:
http://forum.nginx.org/read.php?21,234824,234824#msg-234824
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|