Varnish est directement activé en tant que reverse proxy pour le serveur Web où se trouve le contenu du site Web en question. Lorsqu’une page est chargée, le processus est d’abord traité par le serveur d’origine mais le proxy Varnish sauvegarde la requête et le contenu requis. Lors d’un nouveau chargement de ce genre, les données peuvent directement être chargées en partant du cache Varnish. Le programme stocke alors toutes les données dans la mémoire vive et laisse le système d’exploitation décider ce qui doit être déplacé sur le disque dur du serveur. Ainsi, il est possible d’éviter que le système ne sauvegarde en même temps des données dans le cache et sur le disque dur.
Varnish sert également de répartiteur de charge (Load balancer). Suite au processus round robin, les requêtes entrantes du client sont évaluées respectivement en tant que threads séparés (phases de travail) qui sont successivement traitées par le cache Varnish. Une limite fixe détermine combien de threads peuvent être traités en même temps. Ce processus fini, toutes les requêtes atterrissent dans une file d’attente. C’est seulement quand le bout de la file est atteint que les connexions entrantes sont bloquées.
La configuration du proxy reverse de Varnish est contrôlée principalement via le langage propriétaire spécifique du programme (Varnish Configuration Language (VCL) en anglais). Ce dernier permet d’écrire des jonctions à l’aide desquels un code étranger peut être intégré dans l’application. Si un tel script VLC charge, ce dernier est traduit dans le langage de programmation C et compilé dans une bibliothèque de programmes. Les instructions de VCL sont reliées avec le cache Varnish. Si le CMS utilisé, le logiciel de la boutique en ligne ou l’application Web de base maîtrisent la langue de balisage ESI (Edge Side Includes), Varnish peut par ailleurs livrer les pages mises en cache dans leur ensemble. Le langage de balisage crée dans les fichiers HTML des pages appelées balises ESI qui caractérisent le contenu dynamique. Lors d’une requête d’un client, le cache Varnish reconnaît ces balises et charge les contenus correspondants.