Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Post on 29-Nov-2014

97 views 1 download

description

Varnish est un serveur de cache HTTP qui permet d'accélérer les sites et applications web tout en allégeant la charge serveur... et bien d'autres choses encore !

Transcript of Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Varnish

Faites briller vos applications et sites web !

Thibaud Juin

Thibaud Juin

Des centaines de sites Un même code

Optimisation

Optimisation du code

Une fonction/page

spécifique

Une fonction

commune à toutes

les pages

Optimisation

Évitons l'éternel recommencement,

utilisons le cache !

Varnish

Faites briller vos applications et sites web !

Thibaud Juin

Fonctionnement de Varnish

Mise en place

Aller plus loin !

Fonctionnement

VisiteurVarnishApache, BD...

Un serveur proxy inverse et cache HTTP

C'est quoi Varnish ?

VisiteurVarnishApache, BD...

Et pourquoi "Varnish" ?

Cache

FonctionnementC'est quoi Varnish ?

Fonctionnement

VisiteurVarnishApache, BD...

Cache

Load balancing

VCL : le langage de configuration

sub vcl_recv {

if (req.restarts == 0) {

if (req.http.x-forwarded-for) {

set req.http.X-Forwarded-For =

req.http.X-Forwarded-For + ", " + client.ip;

} else {

set req.http.X-Forwarded-For = client.ip;

}

}

if (req.request != "GET" && req.request != "HEAD" && req.request != "PUT" && req.request != "POST" &&

req.request != "TRACE" && req.request != "OPTIONS" && req.request != "DELETE") {

/* Non-RFC2616 or CONNECT which is weird. */

return (pipe);

}

if (req.request != "GET" && req.request != "HEAD") {

/* We only deal with GET and HEAD by default */

return (pass);

}

if (req.http.Authorization || req.http.Cookie) {

return (pass);

...

Fonctionnement

Mettre en place Varnish

C'est très simple !

Une installation, une petite configuration...

- vitesse ou taille du cache ?

Quelques questions...

- Une même page varie t-elle en fonction de l'utilisateur ? Panier, compte

utilisateur...

- GET et POST utilisés à bon escient ?

Utile :

- Utilisation des en-têtes HTTP de cache

- Mod Rpaf (apache)

- Vider le cache

Aller plus loin !Configuration avec le VCL

Réception d'une requête

calcul du hash

HIT MISS

Requête au backend

Envoi de la réponse

Aller plus loin !Vider le cache

sub vcl_recv {

if (req.request == "BAN") {

# Same ACL check as above:

if (!client.ip ~ purge) {

error 405 "Not allowed.";

}

ban("req.http.host == " + req.http.host +

"&& req.url == " + req.url);

# Throw a synthetic page so the

# request won't go to the backend.

error 200 "Ban added";

}

}

Aller plus loin !Filtrer les requêtes

if(req.request != "GET" && req.request != "POST" req.request != "HEAD"){

error 405 "Not allowed.";

}

if(req.http.host == "beta.42stores.com" ){

set req.backend = beta;

}

else{

set req.backend = apache;

}

Aller plus loin !Réécriture d'URL

if (req.url ~ "^/ex/") {

set req.url = regsub(req.url, "^/ex/(.*)$", "/exemple/\1");

}

if (req.host == "exemple.com") {

set req.host = "www.exemple.com";

}

Pour terminer...

Varnish Cache is really, really fast. It typically speeds up delivery with a

factor of 300 - 1000x, depending on your architecture.

Performant

Flexible

Robuste

Convaincu ?

Des questions ?

Présentation réalisée avec Bunkr !

$ apt-get install varnish