Varnish et son " stockage "

Introduction Varnish peut cacher les données en mémoire et/ou sur disque. On peut donc lui dire qu’on lui alloue 512Mo de mémoire pour cacher et aussi 95% de l’espace libre d’une partition en ajoutant les paramètres ci-dessous : -s malloc,512M \ -s file,/var/lib/varnish/varnish_storage.bin,95% Le stockage " Transient " Varnish a aussi par défaut, un cache en mémoire pour les objets de courte durée, ce cache n ‘a pas de limite par défaut, ce fonctionnement par défaut peut donc faire swaper et cracher votre serveur (ou le mien 🙂 ) [Lire]

Protection contre le hotlinking avec Varnish

Voici un exemple de condition à ajouter dans votre vcl recv pour protéger un dossier d’un site :

if (req.http.host == "le.domaine.a.proteger.ltd" && req.url ~ "^/l/uri/a/proteger" && (req.http.referer && req.http.referer !~ "^http://le.domaine.a.proteger.ltd/")) {
    error 403 "No hotlinking please";
}

Remplacer :

  • le.domaine.a.proteger.ltd par le domaine (attention si votre site est accessible avec et sans www)
  • /l/uri/a/proteger : par l’uri à protéger, supprimer cette partie si vous voulez protéger l’intégralité du site

Pour mettre en place le même type de protection via apache, voir cet article : Un htaccess pour les pompeurs de sites dans lequel est expliqué comment procéder avec des règles de réécriture Apache

LoadBalancing avec Sticky bit

La documentation Varnish parle de loadbalancing aléatoire et Round Robin, mais n’indique pas comment loadbalancer en conservant les sessions La configuration ci-dessous ne se base pas sur les IP sources mais sur un cookies pour identifier un client Backends backend serveur1 { .host = "192.168.0.1"; .port = "80"; } backend serveur2 { .host = "192.168.0.2"; .port = "80"; } Configuration du Loadbalancing director member client { { .backend = serveur1; . [Lire]

Varnish est plus intelligent que vous !

Utiliser la configuration built-in Comme nous l’indique ops42 dans son article http://ops42.wordpress.com/2012/11/14/varnish-is-smarter-than-you/. pdf de la page qui n’existe plus 🙁 , Varnish fonctionne très bien avec sa configuration “built-in”. Au fur et à mesure, beaucoup de sysops (comme moi) ont mis en place, à tord, des configurations Varnish de plus en plus complexe. La seule configuration à mettre en place est celle lié à vos backends Objectif d’une modification de vcl Toutes modification des VLC sera donc un hotfix pour corrigé un problème lié a votre application. [Lire]

Template Varnish

Le but de cette configuration est de simplifier au maximum la mise en place de Varnish.

Avant d’appliquer la configuration a votre Varnish, vous devez éditer le fichier backend.vcl pour configurer votre backend.

Cette configuration reste minimaliste et utilise la configuration " builtin " qui fonctionne très bien à conditions que les RFC soient respecté.

Conserver l'IP du client derrière un reverse proxy

Lorsque Nginx est placé derrière un reverse proxy, celui ci avec une configuration de base logera L’IP des visiteur avec celle du reverse proxy et non avec L’IP des visiteurs. Cela peut poser des problèmes par exemple dans le cas ou vous utilisez Akismet comme anti-spam pour vos commentaires. Pour cela, dans varnish ajouter après sub vcl_recv { la ligne set req.http.X-Forwarded-For = client.ip; puis dans la configuration Nginx, dans la configuration http, ajouter [Lire]

Configurer Varnish pour Drupal

Dans cet article, uniquement les spécificité de configuration pour Drupal seront indiqué Dans la vcl_recv, on nettoie les cookies si vous ne l’avez pas déjà fait : set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)(__[a-z]+|has_js)=[^;]*", ""); set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", ""); if (req.http.Cookie ~ "^\s*$") { unset req.http.Cookie; } On spécifie ce qu’il faut cacher, ou pas : if (req.url ~ "^/sites/") { unset req.http.Cookie; } if (req.url ~ "^/misc/") { unset req. [Lire]

Configuration de Varnish

Mise en place du dépôt Varnish et installation Pour cela, il faut : Installer la clef PGP du dépôt Varnish Ajouter le dépôt Varnish Installer Varnish curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add - echo "deb http://repo.varnish-cache.org/debian/ $(lsb_release -s -c) varnish-3.0" >> /etc/apt/sources.list.d/varnish.list apt-get update apt-get install varnish``` # Activation de varnish et configuration du port 80 a la place du port 6081 ```sh sed -i "#START#s#no#yes#" /etc/default/varnish- sed -i "s#-a :6081#-a :80#" /etc/default/varnish sed -i "s#/etc/varnish/default. [Lire]