Archives de catégorie : Varnish

Varnish

On ira voir l'excellent site : https://sysadmin.infragate.fr qui possède un article très complet sur le sujet. :

https://sysadmin.infragate.fr/varnish/

Commandes Varnish

VarnishTop

statistiques façon top Linux, qui présentent les événements de trace les plus récurrents par ordre d’importance.

VarnishStat

ensemble de compteurs comme le nombre de requêtes, le nombre de requêtes envoyées depuis le cache, le nombre de requêtes envoyées au backend, etc.

VarnishLog

l’accès au log détaillé de Varnish se trouve être une file mémoire qui se purge au fur et à mesure qu’elle se remplit. Il est possible de la diriger vers un fichier et de filtrer son contenu.

VarnishHist

histogramme permettant de suivre en secondes le temps mis par Varnish pour desservir le contenu, qu’il provienne du cache ou non.

config test varnish :

varnishd -C -f /etc/varnish/default.vcl

S’il le retour de la commande ne crash pas d’erreur, on peut reload le service varnish. N.B : la configuration sera dégueulée dans shell si tout est OK.

Définition du backend

Dans le fichier de configuration /etc/varnish/default.vcl

En mode LoadBalancing : https://www.varnish-cache.org/trac/wiki/LoadBalancing

backend server1 {
  .host = "x.x.x.x";
  .port = "80";
  .probe = {
     .url = "/";
     .interval = 5s;
     .timeout = 1 s;
     .window = 5;
     .threshold = 3;
  }
}
backend server2 {
  .host = "y.y.y.y";
  .port = "80";
  .probe = {
     .url = "/";
     .interval = 5s;
     .timeout = 1 s;
     .window = 5;
     .threshold = 3;
  }
}

director server_group round-robin {
        {
                .backend = server1;
        }
        {
                .backend = server2;
        }
}

Purge cash

le restart du service varnish vide le cache. Il est possible de purge le cache avec une URL, il faut vérifier les acl au niveau de la configuration de varnish

Redirect

Dans le fichier de configuration /etc/varnish/default/vcl

if (req.http.Host ~ "^(www\.)?consosmart-novalgicfort\.com$") {
     error 801 "Moved Permanently";
     }

if (obj.status == 801) {
    set obj.http.Location = "https://www.consosmart.com/odr/214/novalgic";
    set obj.status = 301;
    return (deliver);
    }

ACL sur un vhost

Dans le fichier de configuration /etc/varnish/default/vcl

acl ip_name {
	"x.x.x.x/26"
	"y.y.y.y/25"
}

if (server.ip == "z.z.z.z" && req.http.host == "www.yourdomain.fr" && client.ip !~ ip_name ) {
        error 401 "Unauthorized.";
      }

ACL sur un User Agent

Dans le fichier de configuration /etc/varnish/default/vcl

 if (req.http.User-Agent ~ "(YaBrowser|YandexBot)") {
        error 401 "Unauthorized.";
      }
 

/