1000 FAQ, 500 Anleitungen und Lernvideos. Hier gibt es nur Lösungen!
Varnish auf Cloud-Server verwenden
Dieser Leitfaden stellt mehrere Beispiele fĂŒr die Verwendung von Varnish auf Serveur Cloud Infomaniak vor.
â ïž FĂŒr zusĂ€tzliche Hilfe kontaktieren Sie einen Partner oder starten Sie kostenlos eine Ausschreibung â erfahren Sie auch mehr ĂŒber die Rolle des Hosters.
Varnish-Konfiguration
Nach der Installation umfasst die Konfiguration von Varnish wichtige Regeln fĂŒr das Caching und das Purging. Achten Sie darauf, keine unerwĂŒnschten IP-Adressen versehentlich zu autorisieren.
Hier ist ein Beispiel fĂŒr eine grundlegende Konfigurationsdatei mit einigen hĂ€ufigen FĂ€llen und verschiedenen Aktionen/Regeln in einem einzigen Beispiel:
vcl 4.0;
# Configuration du backend par défaut
backend default {
.host = "127.0.0.80"; # Adresse IP du backend
.port = "80"; # Port du backend
}
# Définition d'une liste de contrÎle d'accÚs (ACL) pour les IPs autorisées à purger le cache
acl purge {
"localhost"; # IP locale
"1.2.3.4"; # IP de votre domicile
"42.42.42.0"/24; # Plage d'IP publique de votre entreprise
! "42.42.42.7"; # Exclusion d'une IP spĂ©cifique (ex : un collĂšgue gĂȘnant)
}
# Traitement des requĂȘtes Ă leur rĂ©ception par Varnish
sub vcl_recv {
# Autoriser les requĂȘtes de purge
if (req.method == "PURGE") {
# Vérification si l'IP du client est autorisée à purger
if (!client.ip ~ purge) { # 'purge' fait référence à l'ACL définie plus haut
# Retourne une page d'erreur si l'IP n'est pas autorisée
return (synth(405, "Cette IP n'est pas autorisĂ©e Ă envoyer des requĂȘtes PURGE."));
}
# Si l'IP est autorisĂ©e, purger le cache pour cette requĂȘte
return (purge);
}
# Autoriser la purge de toutes les images via une requĂȘte PURGEALL
if (req.method == "PURGEALL" && req.url == "/images") {
if (!client.ip ~ purge) {
return (synth(405, "Cette IP n'est pas autorisĂ©e Ă envoyer des requĂȘtes PURGE."));
}
# Invalider tous les objets en cache correspondant Ă des images
ban("req.url ~ \.(jpg|png|gif|svg)$");
return (synth(200, "Images purgées."));
}
# Ne pas mettre en cache les pages avec une autorisation (header Authorization)
if (req.http.Authorization) {
# Passer la requĂȘte directement au backend sans la mettre en cache
return (pass);
}
}
# Traitement de la réponse du backend avant de la renvoyer au client
sub vcl_backend_response {
# Mise en cache des images pour une durée de 1 jour
if (beresp.http.content-type ~ "image") {
set beresp.ttl = 1d;
}
# Si le backend indique que la rĂ©ponse ne doit pas ĂȘtre mise en cache, respecter cette consigne
if (beresp.http.uncacheable) {
set beresp.uncacheable = true;
}
}
Purge von der CLI-Schnittstelle
Ab diesem Punkt gelten die in der obigen Konfiguration festgelegten Regeln fĂŒr alle Anfragen. Wenn die konfigurierte Website "domain.xyz" ist, können Sie einfach das CLI-Tool "curl
" verwenden und folgendes tun:
# Envoyer une requĂȘte PURGE pour purger la page d'accueil de "domain.xyz"
$ curl -X PURGE https://domain.xyz/
# Réponse renvoyée par le serveur Varnish
<!DOCTYPE html>
<html>
<head>
<title>200 Purged</title>
</head>
<body>
<h1>Erreur 200 : Purge effectuée</h1>
<p>La page a été purgée avec succÚs.</p>
<h3>Guru Meditation:</h3>
<p>XID: 2</p>
<hr>
<p>Serveur de cache Varnish</p>
</body>
</html>
Und dort wurde die Startseite geleert. Oder um eine andere URL zu leeren, zeigen Sie einfach die Anfrage auf diese:
# Envoyer une requĂȘte PURGE pour purger un fichier spĂ©cifique Ă "domain.xyz"
$ curl -X PURGE https://domain.xyz/some_path/some_file.html
# Réponse renvoyée par le serveur Varnish
<!DOCTYPE html>
<html>
<head>
<title>200 Purged</title>
</head>
<body>
<h1>Erreur 200 : Purge effectuée</h1>
<p>Le fichier a été purgé avec succÚs.</p>
<h3>Guru Meditation:</h3>
<p>XID: 4</p>
<hr>
<p>Serveur de cache Varnish</p>
</body>
</html>
Oder, wie in der VCL-Konfiguration angegeben, alle Bilder löschen:
# Envoyer une requĂȘte PURGEALL pour purger toutes les images dans "domain.xyz"
$ curl -X PURGEALL https://domain.xyz/images
# Réponse renvoyée par le serveur Varnish
<!DOCTYPE html>
<html>
<head>
<title>200 Purged images</title>
</head>
<body>
<h1>Erreur 200 : Images purgées</h1>
<p>Toutes les images ont été purgées avec succÚs.</p>
<h3>Guru Meditation:</h3>
<p>XID: 32770</p>
<hr>
<p>Serveur de cache Varnish</p>
</body>
</html>
Purge von einem CMS
Dies ist ein bisschen schwieriger zu veranschaulichen, da es viele Möglichkeiten gibt, die Caching-Verwaltung von einem Backend aus zu steuern. Im obigen Konfigurationsbeispiel wird eine Kontrolle ĂŒber den Header "Uncacheable
" hinzugefĂŒgt, die das Caching deaktiviert. Mit dieser Option könnte jedes CMS einfach diesen Header in der Antwort festlegen, um das Caching dieser Anfrage zu deaktivieren, z.B.
Von jedem PHP-Code aus und mit der obigen Konfiguration können Sie einfach eine HTTP-Anfrage senden und diesen Ausschnitt verwenden, um einen PURGE des Caches durchzufĂŒhren:
<?php
if ($curl = curl_init("http://127.0.0.1/some_url")) {
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "PURGE",
CURLOPT_HTTPHEADER => [
"Host: {$_SERVER['HTTP_HOST']}"
]
]);
curl_exec($curl);
if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == 200) {
echo "Cache purged!";
}
curl_close($curl);
}
?>
Mehr erfahren
NĂŒtzliche Links zum Konfigurationssprache Varnish (VCL) zur Steuerung der Anforderungsverarbeitung, des Routings, der Caching und mehrere andere Aspekte: