28 juil. 2010
Serveur de cache avec nginx
Par Christophe de saint leger le mercredi, juillet 28 2010, 12:30 - Serveur - Lien permanent
Monter un serveur de cache

Augmentez les performances de votre site web , rendre le chargement de vos pages plus rapides , au grand bonheur de vos lecteurs mais aussi des moteur de référencement qui maintenant se basent aussi sur la vitesse de chargement des pages .
Voilà un petit aperçu du changement avec et sans serveur de cache .
Hébergement du site
Site : lindev.fr
Ligne : ADSL standard
Serveur : Nginx sous debian Lenny
Serveur de cache
Machine : cloud
Ligne : 1and1 100 mb/s
Serveur : Nginx sous debian Lenny
Avant :

Aprés :

Vous pouvez remarquer le temps de réponse moyen .... je pense que de longs discours ne sont pas nécessaires .
Concept / Schéma

Mise en place
Je part du principe ou vous avez votre serveur nginx ou apache de fonctionnel , et le serveur de cache "nginx" lui aussi fonctionnel , mais non configuré ( car c'est que que nous allons voir ici )
Je vais prendre l'exemple concret de "lindev.fr" car c'est en condition réels que je fais mes tests , afin de ne pas vous raconter n'importe quoi .
Il va falloir créer le répertoire qui va contenir les données en cache :
mkdir -p /usr/local/nginx/proxy_temp/
Ensuite le Vhost
Toute la configuration nécessaire , se trouve dans le Vhost , que voici :
proxy_cache_path /usr/local/nginx/proxy_temp/ levels=1:2 keys_zone=cache:10m inactive=10m max_size=1000M;
server {
listen 80;
server_name lindev.fr www.lindev.fr;
charset utf-8;
access_log /var/log/host.access.log main;
## PROXY - Web
location / {
## Proxy options
proxy_buffering on;
proxy_cache_min_uses 3;
proxy_cache_valid any 10m;
proxy_ignore_client_abort off;
proxy_intercept_errors on;
proxy_next_upstream error timeout invalid_header;
proxy_redirect off;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_pass http://origine.lindev.fr;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_buffers 32 4k;
proxy_ignore_headers Expires Cache-Control;
proxy_set_header Host $host;
}
}
Vous avez certainement remarqué les noms de domaine ,
- lindev.fr ( qui pointe vers le serveur de cache )
- origine.lindev.fr ( qui pointe vers le serveur originale apache ou autre )
Ensuite concernant les paramètres utilisés ici leurs noms sont ( enfin selon moi ) assez parlant , je vais vous rediriger pour chacun d'eux vers l'explication officiel :
proxy_cache_path
proxy_buffering
proxy_cache_min_uses
proxy_cache_valid
proxy_ignore_client_abort
proxy_intercept_errors
proxy_next_upstream
proxy_redirect
proxy_set_header
proxy_connect_timeout
proxy_send_timeout
proxy_read_timeout
proxy_pass
proxy_buffers
proxy_ignore_headers
proxy_set_header
Il vous reste à redemarrer nginx :
/usr/local/nginx/sbin/nginx -s reload
Si aucune erreur n'apparait , alors c'est gagner , reste à voir sur vos graphs de monitoring comme woozweb , l'impact de ce type de structure
La configuration ci-dessus , peut être mise en parti dans la configuration globale de nginx , ce qui vous évite de la répéter sur vos différents vhost.
Pour ce qui est des options , il doit y avoir moyen d'améliorer ça , si vous avez des idées , je suis preneur .
Merci de m'avoir lu ,
Ch.
