Varnish devant Apache sur Ubuntu
Je viens de mettre en œuvre Varnish devant Apache sur une distribution Linux Ubuntu Server LTS Trusty 14.04. Varnish est un proxy inverse qui permet la mise en cache des requêtes vers le serveur Apache. Ce que je perçois de son intérêt, ce sont les gains obtenus au niveau de l’exécution des scripts PHP. Pour le reste, il n’a pas grand intérêt par rapport aux optimisations réalisables dans Apache !
Installation sur de Varnish sur Ubuntu
Elle se fait très classiquement :
aptitude install varnish
Configuration du démon Varnish
Sur Ubuntu, vous devez éditer le fichier /etc/default/varnish et modifier le port utilisé pour qu’il écoute sur le port 80 :
#DAEMON_OPTS="-a :6081 \ DAEMON_OPTS="-a *:80 \
Configuration de Varnish
C’est l’autre fichier de configuration de Varnish. Le plus important. Il s’agit de /etc/varnish/default.vcl :
backend default { #Redirection vers Apache qui écoute sur le port 8080 .host = "127.0.0.1"; .port = "8080"; } sub vcl_fetch { #Adresse Ip du client dans les logs du serveur Apache remove req.http.X-Forwarded-For; set req.http.X-Forwarded-For = client.ip; #Gestion du TTL if (req.url ~ "\.(css|js|gif|png|je?pg|docx?|pdf|txt|html|xml)(\??.*)$") { set beresp.ttl = 86400s; } if (req.url ~ "\.(php)(\??.*)$") { set beresp.ttl = 60s; } }
Configuration d’Apache
Vous devez d’abord changer le port d’écoute du serveur Apache au niveau du fichier /etc/apache2/ports.conf, sur le port 8080 comme indiqué ci-dessus :
Listen 8080
Il convient de modifier le format des logs Apache pour qu’ils disposent de l’adresse Ip du client au niveau du fichier /etc/apache2/apache2.conf :
#LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
Vous devez aussi modifier le fichier /etc/apache2/sites-available/000-default.conf :
<VirtualHost *:8080> ServerAdmin dszalkowski@gmail.com DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Quelques outils liés à Varnish
varnishlog : affichage des logs
varnishstat : affichage des statistiques d’utilisation
varnishhist : affichage sous forme d’un graphe de l’historique des requêtes effectuées
varnishadm : interface d’administration locale