У меня простая конфигурация nginx;
server{
servername localhost;
root /var/www/webroot;
location / {
set_md5 $memcached_key $uri;
index index.php index.html;
try_files $uri $uri/ @cache;
}
location @cache {
memcached_pass localhost:11211;
default_type text/html;
error_page 404 @fallback;
}
location @fallback{
try_files $uri $uri/ /index.php?url=$uri&$args;
}
location ~ \.php$ {
fastcgi_param MEM_KEY $memcached_key;
include /etc/nginx/fastcgi.conf;
fastcgi_index index.php;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
У меня есть помощник CakePHP, который сохраняет представление в memcached с помощью параметра MEM_KEY. Я протестировал его, и он работает, однако nginx всегда идет в направлении @fallback. Как я могу решить эту проблему? Может ли быть проблема?
Благодаря комментарию DukeLion я наконец-то смог выяснить, что происходит, nginx выполняет доступ к серверу memcached в порядке, но cakephp изменяет ключ.
Например, я пытаюсь получить доступ к /home_page.html
Nginx получает доступ к кешу памяти с помощью /home_page.html, не находит его, поэтому загружает cakephp, cakephp генерирует представление и сохраняет его в ключе _home__page_html
Решением этой проблемы было расширение механизма memcached cakephp.
Спасибо!!!
pd: вы можете попробовать механизм просмотра memcached в http://andy-gale.com/cakephp-view-memcache.html