Nginx, memcached e cakephp: o módulo memcached sempre erra o cache

4

Eu tenho uma configuração simples de 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;
  }
}

Eu tenho um assistente CakePHP que salva a visão no memcached usando o parâmetro MEM_KEY. Eu testei e está funcionando, no entanto, o nginx está sempre indo para a direção @fallback. Como posso resolver esse problema? Poderia o problema ser?

    
por Tim 01.06.2012 / 04:21

1 resposta

0

Graças ao comentário do DukeLion, eu pude finalmente descobrir o que estava acontecendo, o nginx está fazendo o get para o servidor do memcached, mas o cakephp está flexionando a chave.

Exemplo, tento aceder a /home_page.html

O Nginx chega ao memcache com o /home_page.html, não o encontra para carregar o cakephp, o cakephp gera o view e o salva na chave _home__page_html

A solução para isso foi estender o mecanismo cakephp do memcached.

Obrigado !!!

pd: você pode obter uma amostra do mecanismo de visualização do memcached no link

    
por 01.06.2012 / 17:39