Webserver · 3 min read · Jan 22, 2026

Warum Sie immer Nginx mit Microcaching verwenden sollten

Warum Sie immer Nginx mit Microcaching verwenden sollten

Jeder weiß, wie schwer es ist, so viel wie möglich aus Ihren Webserver(n) herauszuholen. In meinem täglichen Beruf als Hosting-Engineer bedeutet das, dass ich ziemlich oft die gleiche Frage bekomme: “Wow, coole Website, aber kann sie mit großem Traffic umgehen?”.

Die “normale” Situation

Eine “normale” Website, die unter Apache mit mod_php läuft, sollte in der Lage sein, problemlos 20 Anfragen pro Sekunde zu verarbeiten, aber was ist, wenn Sie etwa 50 Anfragen pro Sekunde erhalten (nicht ungewöhnlich bei einigen Websites wie Websites für politische Parteien usw.)? Die Antwort ist meiner Meinung nach, Apache abzulehnen, denn so wie es jetzt ist, reicht Apache einfach nicht mehr aus.

JA! Nginx!

Hier kommt Nginx ins Spiel! Was Sie tun, ist, Ihre Website auf Nginx einzurichten und einen schnellen Lasttest durchzuführen (zum Beispiel 1000 Anfragen mit 200 gleichzeitigen Benutzern), und Sie sehen, dass Sie nicht viel mehr als mit Apache erhalten, aber wie? Es ist ganz einfach, es liegt daran, dass Nginx kein integriertes PHP-Modul hat, sodass Sie einen FastCGI-Prozessor benötigen, um die PHP-Seiten zu verarbeiten (ich empfehle die Verwendung von php-fpm, da es besser ist als spawn-cgi). Was sollte ich jetzt verwenden, fragen Sie? Verwenden Sie Microcaching!

Was zur Hölle ist Microcaching?

Was ist Microcaching? Nun, die Theorie ist, dass Sie Ihre Dateien usw. für eine kurze Zeit (zum Beispiel 1 Sekunde) cachen. Was das bedeutet, ist, dass, wenn ein Benutzer die Seite anfordert, sie sie cached, sodass die nächste Anfrage für eine andere Seite aus dem Cache kommt, und bei 100 Benutzern, die innerhalb von 5 Sekunden anfordern, muss nur 1 von 20 Benutzern die vollständige Seite aufbauen (und mit Nginx und einer gut strukturierten Seite ist das kein Problem).

Ich glaube es nicht!

Sie sollten es besser glauben! Lassen Sie mich Ihnen ein Beispiel geben, nehmen Sie diese Website, auf der Sie sich gerade befinden. Angenommen, wir haben einen Lasttest von 1000 Anfragen mit 200 gleichzeitigen Benutzern. Wenn Sie diese Website unter Apache ausführen, würden Sie zwischen 10-40 Anfragen pro Sekunde erhalten, maximal! Und Ihr Webserver wäre unter ernsthaftem Druck und Sie wären gezwungen, Ihre Umgebung zu erweitern. Unter Nginx mit php-fpm ohne Microcaching ist es dasselbe (vielleicht ein paar mehr Anfragen, aber Ihr Server hätte viele php-fpm-Prozesse, die die Anfragen verarbeiten). Mit Microcaching erhalten Sie beeindruckende 300-450 Anfragen pro Sekunde!

Ok, gib es mir!

Microcaching ist tatsächlich einfach einzurichten, unten ist ein Beispielkonfiguration, die Sie für jede mit PHP erstellte Website verwenden könnten (in diesem Fall ist es spezifisch für Wordpress). Schauen Sie sich das an:

#
# Ihre Website
#
server {
    listen       80;
    server_name  ;
    access_log    main;
    error_log ;
    root   ;
    location / {
        index  index.php index.html index.htm;
    }
    if (!-e $request_filename) {
        rewrite ^(.+)$ /index.php?q=$1 last;
    }
    location ~ \.php$ {
        # Standardwerte für Variablen festlegen
        set $no_cache "";
        # Wenn nicht GET/HEAD, nicht cachen & Benutzer für 1 Sekunde über Cookie als nicht cachebar markieren
        if ($request_method !~ ^(GET|HEAD)$) {
            set $no_cache "1";
        }
        # Kein Cache-Cookie ablegen, wenn nötig
        # (aus irgendeinem Grund schlägt add_header fehl, wenn es im vorherigen if-Block enthalten ist)
        if ($no_cache = "1") {
            add_header Set-Cookie "_mcnc=1; Max-Age=2; Path=/";
            add_header X-Microcachable "0";
        }
        # Cache umgehen, wenn das No-Cache-Cookie gesetzt ist
        if ($http_cookie ~* "_mcnc") {
                    set $no_cache "1";
        }
        # Cache umgehen, wenn das Flag gesetzt ist
        fastcgi_no_cache $no_cache;
        fastcgi_cache_bypass $no_cache;
        fastcgi_cache microcache;
        fastcgi_cache_key $server_name|$request_uri;
        fastcgi_cache_valid 404 30m;
        fastcgi_cache_valid 200 10s;
        fastcgi_max_temp_file_size 1M;
        fastcgi_cache_use_stale updating;
        fastcgi_pass localhost:9000;
        fastcgi_pass_header Set-Cookie;
        fastcgi_pass_header Cookie;
        fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param  PATH_INFO          $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED    $document_root$fastcgi_path_info;
        #fastcgi_intercept_errors on;
        include fastcgi_params;
    }
}

Sie sollten auch das Cache-Format und die Cache-Zone in Ihrer nginx.conf festlegen, fügen Sie diese Zeilen zu Ihrem http {} Block hinzu:

fastcgi_cache_path /var/cache/nginx2 levels=1:2 keys_zone=microcache:5m max_size=1000m;
log_format cache '$remote_addr - $remote_user [$time_local] "$request" '
'$status $upstream_cache_status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

Probieren Sie es aus!

Ich ermutige jeden, es selbst auszuprobieren und die Leistungsverbesserung zu sehen! Ich weiß, es ist ein großer Wechsel von Apache zu Nginx (konfigurationsmäßig), aber Sie werden es wirklich schnell verstehen!

Schauen Sie sich http://livebyt.es für weitere Artikel an, die bald kommen!

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.