Jeu de cache cache

Salut,

Je suis en train d’implementer une gestion du cache sur mon application.
Mes regles de routage au niveau de nginx sont les suivantes :

#personne authentifié
if ($http_cookie ~* “cookie_auth”) {
proxy_pass http://MONGREL;
break;
}

static files in /public

if (-f $request_uri.html) {
break;
}

En gros je veux que lorsqu’une personne est authentifié elle passe par
l’application.
Le pb est que mongrel me renvoie quand même la page statique plutot que
de passer par l’appli.

Est ce qu’il y a un moyen d’interdire mongrel de renvoyer des pages
statiques via le router ?

D’une maniere générale comment gérez vous ce genre de pb de cache ?

Merci !

Est ce qu’il y a un moyen d’interdire mongrel de renvoyer des pages
statiques via le router ?

D’une maniere générale comment gérez vous ce genre de pb de cache ?

Voilà comment il faut faire:

Si dans Rails tu as activé le page caching alors utilise:

if (-f $request_filename/index.html) {
  rewrite (.*) $1/index.html break;
}

if (-f $request_filename.html) {
  rewrite (.*) $1.html break;
}

if (!-f $request_filename) {
  proxy_pass http://ton_appli;
  break;
}

Et pour qu’nginx s’occupe de tout ce qui est ‘asset’, rajoute ça:

location ~* .(css|gif|ico|jpg|js|png|swf)$ {
root /chemin/de/ton/appli;
access_log off;
expires 10d;
}

Bien évidemment tu adaptes à tes besoins.


Vidéos de formation Firefox, Nginx, Xen sur http://www.digiprof.fr

merci fernando

J’ai modifié le path des fichiers statiques pour qu’ils soient dans un
sous-repertoire /cache.

En modifiant ma règle de rewriting j’obtiens ce que je veux :

if (-f $document_root/cache$request_uri.html) {
rewrite (.*) /cache/$1.html break;
}

a+

Fernando P. wrote:

Est ce qu’il y a un moyen d’interdire mongrel de renvoyer des pages
statiques via le router ?

D’une maniere générale comment gérez vous ce genre de pb de cache ?

Voilà comment il faut faire:

Si dans Rails tu as activé le page caching alors utilise:

if (-f $request_filename/index.html) {
  rewrite (.*) $1/index.html break;
}

if (-f $request_filename.html) {
  rewrite (.*) $1.html break;
}

if (!-f $request_filename) {
  proxy_pass http://ton_appli;
  break;
}

Et pour qu’nginx s’occupe de tout ce qui est ‘asset’, rajoute ça:

location ~* .(css|gif|ico|jpg|js|png|swf)$ {
root /chemin/de/ton/appli;
access_log off;
expires 10d;
}

Bien évidemment tu adaptes à tes besoins.


Vidéos de formation Firefox, Nginx, Xen sur http://www.digiprof.fr