<div dir="ltr">посмотрите в сторону APC (<a href="http://pecl.php.net/package/APC">http://pecl.php.net/package/APC</a>). за счет кеширования статики вы много не выиграете (если вообще что-то выиграете), а эффективность от php-кешей в подобных случаях обычно лучше, чем лепить костыли на nginx-е.<br>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">9 января 2013 г., 13:15 пользователь daitepiva <span dir="ltr"><<a href="mailto:nginx-forum@nginx.us" target="_blank">nginx-forum@nginx.us</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Приветствую.<br>
Пытался сделать кеширование по наличию-отсутствию некоторых типичных кук<br>
(member_id pass_hash session_id) для гостей форума на IPB 2.3 (Invision<br>
Power Board). Вроде всё работало как надо - кешировалось только гостям,<br>
файлы в папке кеша появлялись и удалялись как надо. Но появились серьёзные<br>
проблемы - чужие страницы, сессии, хотя кеширование было настроено именно по<br>
отсутствию всех ключевых куков - идентификатор пользователя, хеш пароля,<br>
идентификатор сессии. На всякий случай включил эти куки в ключ объекта, но<br>
там было пусто или нули, т.е. при наличии хотя бы одного из них ответ не<br>
кешировался.<br>
Включал эти переменные в логи - есть. Включал в логи переменную<br>
upstream_cache_status, ничего аномального не заметил.<br>
<br>
Толи какие-то особенности работы движка, толи я что-то накосячил в конфиге.<br>
Вот конфиг в части, касающейся кеширования:<br>
http {<br>
...<br>
proxy_cache_path /var/nginx/proxy_temp levels= keys_zone=dguests:100m<br>
inactive=3m max_size=100m;<br>
server {<br>
...<br>
proxy_cache_key<br>
"$host$request_uri|$request_method|$cookie_member_id|$cookie_pass_hash";<br>
proxy_cache_bypass $cookie_pass_hash $cookie_member_id<br>
$cookie_session_id;<br>
proxy_no_cache $cookie_pass_hash $cookie_member_id $cookie_session_id;<br>
proxy_ignore_headers Expires Cache-Control Set-Cookie;<br>
proxy_cache off;<br>
location ~ \.php$ {<br>
proxy_pass <a href="http://127.0.0.1:8080" target="_blank">http://127.0.0.1:8080</a>;<br>
proxy_set_header X-Real-IP $remote_addr;<br>
proxy_cache dguests;<br>
proxy_cache_valid 30s;<br>
}<br>
}<br>
}<br>
<br>
Пришлось включить Set-Cookie в proxy_ignore_headers, т.к. движок выдаёт её<br>
гостям и страницы не кешировались вовсе.<br>
Пробовал добавлять "proxy_hide_header "Set-Cookie";", но тогда не проходит<br>
авторизация.<br>
<br>
Вообще же задача в снижении нагрузки и, в идеале, повышение устройчивости к<br>
ДДоС-атакам, за счёт кеширования страниц для гостей, а их у меня больше чем<br>
пользователей, например, прямо сейчас онлайн 2700 гостей и 1600<br>
пользователей.<br>
<br>
Спасибо.<br>
<br>
Posted at Nginx Forum: <a href="http://forum.nginx.org/read.php?21,234824,234824#msg-234824" target="_blank">http://forum.nginx.org/read.php?21,234824,234824#msg-234824</a><br>
<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></blockquote></div><br></div>