Varnish cache
De wikiGite
Sommaire
Installation
Recuperer le paquet du depot varnish sur http://repo.varnish-cache.org/redhat/varnish-3.0/ Pour Centos 6 :
yum install http://repo.varnish-cache.org/redhat/varnish-3.0/el6/noarch/varnish-release/varnish-release-3.0-1.el6.noarch.rpm
Pour Centos 5:
wget http://repo.varnish-cache.org/redhat/varnish-3.0/el5/noarch/varnish-release/varnish-release-3.0-1.noarch.rpm rpm -ivh varnish-release-3.0-1.noarch.rpm
Installer Varnish
# yum install varnish
Editer /etc/sysconfig/varnish :
VARNISH_LISTEN_PORT=6081
Éditer la configuration de varnish pour la rediretion vers vers apache /etc/varnish/default.vcl :
backend default { .host = "10.0.0.1"; .port = "80"; #pour eviter les erreurs 503 .connect_timeout = 600s; .first_byte_timeout = 600s; .between_bytes_timeout = 600s; }
Lancer varnish
service varnish start
Lancer varnish au démarrage
# chkconfig varnish on
Read more: http:www.how2centos.com/install-varnish-centos-6/#ixzz2I82TuuYJ
Pour ne pas changer le port d'Apache on redirige le port 80 en entrée avec iptables vers varnish (tous ce qui vient de l’extérieur est natté du port 80 vers le port 6081). Varnish renverra ensuite vers le port 80 d'Apache :
# iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 6081 # iptables-save
iptables-save conserve cette règle aux redémarrages de CentOS. Pour une autre distribution, voir comment relancer cette règle au boot, ou l'ajouter dans rc.local, par exemple.
Rajouter ces raccourci dans ~/.bashrc :
alias varnishon='iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 6081'
alias varnishoff='iptables -t nat -D PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 6081'
alias varnishstatus='iptables -L -t nat |grep -q 6081; if [ "test$?" = "test0" ]; then echo -e "Varnish On"; else echo -e "Varnish Off"; fi ; iptables -L -t nat'
Configuration
Varnish en mémoire plutôt que sur disque
Changer :
MEMLOCK=82000 ... VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"
par :
MEMLOCK=512000 ... VARNISH_STORAGE="malloc,512M"
pour augmenter la mémoire autorisée à 512M et forcer Varnish en mémoire sur ces 512M.
Pour exclure un hôte
vim /etc/varnish/default.vcl
sub vcl_recv {
# Don't cache domain1.com or domain2.org - optional www
if (req.http.host ~ "(www\.)?(domain1.com|domain2.org)\.(com|nl|org|dev|local)") {
return (pass);
}
}
sub vcl_deliver {
# You can optionally set a reponse header so it's easier for you to debug if Varnish really didn't cache objects for the host
# Don't cache domain1.com or domain2.org - optional www
if (req.http.host ~ "(www\.)?(domain1.com|domain2.org)\.(com|nl|org|dev|local)") {
set resp.http.X-Cache = "EXCLUDED";
}
}
Relancer varnish :
service varnish restart
Sources
- http://www.how2centos.com/install-varnish-centos-6/#ixzz2I82TuuYJ : Info complémentaires - http://pietervogelaar.nl/varnish-3-exclude-a-virtual-host/ : exclure virtualhost