Monter un serveur de cache

belles-performances-formule-1-sur-tf1-L-1.jpeg

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 :

mis-en-place-srvcache.jpeg

Aprés :

result-srvcache.jpeg



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

Concept / Schéma

infrastructure-495x437.png

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.