À la découverte de...
Accélérez votre site en soulageant vos serveurs
Serveur web
(Apache, IIS, Nginx, ...)
Base de données
(MySQL, Oracle, MongoDB, ...)
Une architecture idéale dans 80% des cas !
Mais pas dans les 20% restants...
Les problèmes côté serveur :
Les problèmes côté client :
s'appelle...
Elle repose sur des fichiers au format VCL
Une configuration par défaut suffisante
Relativement simple à configurer
Pas besoin de compiler :-)
repose sur des fonctions à surcharger :
Quand Varnish reçoit une requête,
plusieurs actions s'offrent à lui :
backend mon_site { # IP du serveur Apache
.host = "172.24.20.160";
.port = "80";
}
sub vcl_recv { # Surcharge réception requête client
set req.backend = mon_site;
if ( req.url ~ "^/admin/" ) {
return (pass);
}
}
sub vcl_fetch { # Surcharge retour d'Apache
if ( req.url ~ "\.(png|gif|jpg)$" ) {
set beresp.ttl = 1h;
}
}
sub vcl_recv { # Surcharge réception requête client
if ( req.url ~ ".(jpg|gif|png|pdf)" ) {
unset req.http.Cookie;
}
}
sub vcl_fetch { # Surcharge retour d'Apache
if ( req.url ~ ".(jpg|gif|png|pdf)" ) {
unset beresp.http.Cookie;
}
}
sub vcl_recv { # Surcharge réception requête client
if ( req.request == "PURGE" ) {
ban_url( req.url ); # L'URL est une expression régulière
error 200 "Tout marche bien navette";
}
}
PURGE / HTTP/1.1
Edge Side Includes
/bienvenue.php :
<html>
<h1>Bienvenue,</h1>
<esi:include src="/nom.php"/>
<p>et bonne visite !</p>
</html>
/nom.php : <h2><?php print $user->name ?></h2>
varnishstat
varnishtop -b -i TxURL
par @exxxxxodus
Redirection HTTP :
sub vcl_recv {
if( req.url ~ "^/elections$" ){
error 701 "http://elections.lavoixdunord.fr"
}
}
sub vcl_error {
# Code d'erreur perso pour faire des redirections 301 (permanentes)
if( obj.status == 701 ){
set obj.http.Location = obj.response;
set obj.status = 301;
return(deliver);
}
}
Contourner la Same-Origin policy :
# Backend pour le site tiers
backend prestataire_sports {
.host = "www.sports.fr";
.port = "80";
}
# Reverse proxy pour Sports.fr
sub vcl_recv {
if( req.url ~ "^/sports/resultats-foot.json" ){
set req.backend = prestataire_sports;
set req.http.host = "www.sports.fr";
set req.url = "/resultats/football.json";
return (pipe);
}
}
monsite.com/sports/resultats-foot.json appelle www.sports.fr/resultats/football.jsonObjectif : pouvoir consulter le site avec et sans Varnish
VirtualHost Apache :
<VirtualHost *:80>
ServerName monsite.local
ServerAlias *.monsite.local
Fichier /etc/hosts :
127.0.0.1 monsite.local
127.0.0.2 varnish.monsite.local
Installer Varnish :
# Ajouter le dépôt : https://www.varnish-cache.org/installation/ubuntu
sudo apt-get install varnish
Modifier la configuration Varnish :
# Modifier le fichier /etc/default/varnish
[...]
DAEMON_OPTS="-a 127.0.0.2:80 \
[...]
Redémarrez le service Varnish et voila !TOMHTML, décembre 2013