WEB-d Développement Web

PHP, SQL, HTML5, CSS3, Javascript, Mootools, Référencement, SEO, CMS, e-commerce, Apache, Linux, Ubuntu, ...

Accélérateur web Varnish

Varnish Cache est un accélérateur de site web (web application accelerator), aussi appelé "caching reverse proxy". Il s'installe devant un ou plusieurs serveurs web afin d'intercepter les requêtes HTTP et, si possible, fournir une réponse directement depuis son cache, sans devoir interroger les serveurs web.

Installation

Pour l'installer sur Ubuntu, il faut d'abord ajouter la clé du repository:


curl http://repo.varnish-cache.org/debian/GPG-key.txt > key.txt
sudo apt-key add key.txt

Il faut ensuite modifier le fichier /etc/apt/sources.list, et ajouter la ligne suivante:

deb http://repo.varnish-cache.org/ubuntu/ lucid varnish-3.0

Et finalement l'installer de manière classique:


sudo apt-get update
sudo apt-get install varnish

Configuration

Pour la configuration ci-dessous, Varnish est installé sur la même machine que le serveur web Apache. Varnish écoute sur le port 80, et Apache sur le port 8080.

Pour modifier les options de démarrage de Varnish, il faut modifier le fichier /etc/default/varnish:


DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"

Il faut ensuite, dans le fichier /etc/varnish/default.vcl, indiquer à Varnish où se trouvent le ou les serveurs web. Dans ce cas-ci, il se trouve sur la même machine (127.0.0.1) et sur le port 8080:


backend default {
      .host = "127.0.0.1";
      .port = "8080";
}

Par défaut, Varnish utilise une politique de mise en cache très prudente. Il ne met pas le contenu en cache si le browser envoie un cookie dans sa requête. Comme la plupart des sites utilisent les sessions et que le numéro de session est généralement stocké dans un cookie, le browser enverra le numéro de session pour chaque requête, donc également pour télécharger les images, fichiers vidéos, javascript, css,... ce qui empêche la mise en cache.

Pour forcer Varnish à mettre en cache le contenu statique, consultez Varnish : mettre en cache tout le contenu public.

Configurer Apache

Pour que Apache écoute sur le port 8080 au lieu du classique port 80, il faut d'abord modifier le fichier /etc/apache2/ports.conf:


NameVirtualHost *:8080
Listen 8080

Il faut ensuite modifier tous les virtual-hosts (tous les fichiers /etc/apache2/sites-enabled/...):


<VirtualHost *:8080>
...

Démarrage et test

On peut enfin redémarrer Apache, et démarrer Varnish:


sudo /etc/init.d/apache restart
sudo /etc/init.d/varnish start

Pour vérifier que Apache fonctionne correctement, il suffit d'ajouter :8080 dans l'url, par exemple http://mon.serveur.com:8080/ma/page.html

Varnish possède également plusieurs utilitaires pour tester son fonctionnement. Par exemple, pour savoir quelles URLs sont demandées par les clients au serveur Varnish:

varnishtop -i rxurl

Pour savoir quelles requêtes sont transmises par Varnish au serveur web (Apache):

varnishtop -i txurl

Articles similaires