Site icon bintorosoft.com

Varnish Cache konfigurieren: Web Performance für High-Traffic Sites

Varnish Cache ist ein leistungsstarker HTTP-Accelerator, der die Performance von Web-Anwendungen erheblich steigern kann, insbesondere bei High-Traffic-Sites. Durch intelligentes Caching von dynamischen und statischen Inhalten reduziert Varnish die Last auf Webservern wie Nginx oder Apache und beschleunigt die Auslieferung von Inhalten an Endnutzer. In diesem Tutorial zeigen wir praxisnah, wie Varnish installiert, konfiguriert und optimal in einem Web Stack integriert wird.

Systemvoraussetzungen

Varnish Installation und Basis-Konfiguration

Nach der Installation muss Varnish so konfiguriert werden, dass es Anfragen vom Frontend auf den Backend-Webserver weiterleitet.

# Standard-Port ändern (optional)
sudo nano /etc/default/varnish
DAEMON_OPTS="-a :80 
             -T localhost:6082 
             -f /etc/varnish/default.vcl 
             -S /etc/varnish/secret 
             -s malloc,256m"

Backend-Webserver definieren

In der VCL-Datei wird der Backend-Server definiert, auf den Varnish Anfragen weiterleitet.

# /etc/varnish/default.vcl
vcl 4.1;

backend default {
    .host = "127.0.0.1";
    .port = "8080";  # Nginx/Apache Port
}

VCL Caching-Strategien

Standard Caching Regeln

sub vcl_recv {
    if (req.method == "GET" || req.method == "HEAD") {
        return (hash);
    }
    return (pass);
}

sub vcl_backend_response {
if (beresp.status == 200) {
set beresp.ttl = 5m; # Cache TTL
}
}

sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
}

Cache für statische Dateien optimieren

sub vcl_backend_response {
    if (bereq.url ~ ".(png|jpg|jpeg|gif|css|js|ico)$") {
        set beresp.ttl = 30d;
        set beresp.grace = 1h;
    }
}

Integration mit Nginx oder Apache

Varnish arbeitet als Reverse Proxy vor dem Webserver. Der Webserver muss auf einem anderen Port laufen (z. B. 8080), während Varnish auf Port 80 hört.

# Nginx Beispiel
server {
    listen 8080;
    server_name example.com;

    root /var/www/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }
}

Varnish Monitoring und Logs

Health Checks für Backend

Varnish kann Backend-Health Checks durchführen, um fehlerhafte Server automatisch aus dem Pool zu entfernen.

backend default {
    .host = "127.0.0.1";
    .port = "8080";
    .probe = {
        .url = "/health";
        .interval = 5s;
        .timeout = 2s;
        .window = 5;
        .threshold = 3;
    }
}

Varnish Performance Tuning

Cache Invalidation

Um Inhalte gezielt zu aktualisieren, kann Varnish mittels BAN oder PURGE Regeln eingesetzt werden.

# Beispiel BAN nach URL
varnishadm "ban req.url ~ /artikel/123"

IPv4 Subnetzplanung für Varnish und Backend

<math>
Varnish-IP = 10.0.0.2/24
Nginx-IP = 10.0.0.3/24
Backend-Subnetz = 10.0.0.0
Broadcastadresse = 10.0.0.255
</math>

IPv6 Subnetzplanung (optional)

<math>
Varnish-IP = fd00:cache:1::2/64
Nginx-IP = fd00:cache:1::3/64
Subnetzadresse = fd00:cache:1::0
Broadcastadresse = fd00:cache:1::ffff:ffff:ffff:ffff
</math>

Best Practices

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Exit mobile version