Mit den Tipps und Workshops im ADMIN-Magazin 03/2013 sichern Administratoren ihre Webserver und Netze gegen Angriffe ab: gegen Abhören sensibler Informationen, ... (mehr)

Caching

Ein weiteres Schmankerl von Nginx ist die Möglichkeit, Antworten der Backends in einem Cache zwischenzuspeichern und bei der nächsten Anfrage diese Ressource aus dem Cache auszuliefern. Der Cache kann auf URL-Parametern beruhen, die auf Wunsch die Query-Parameter einschließen. Somit lassen sich auch dynamische Abfragen der Art »/index.do?arg1=hello&arg2=world« zwischenspeichern. Den Cache kann man sehr gut dazu verwenden, stärker frequentierte Portale oder Content-Management-Systeme zu beschleunigen. Wenn die Inhalte sich nicht im Sekundentakt ändern, führt der Cache in Peak-Zeiten zu einer spürbaren Entlastung der dahinterliegenden Server.

Der Autor hat Nginx zur Optimierung des Hauptportals eines großen deutschen Vergnügungsparks eingesetzt, das während der Saison im Schnitt pro Tag 30 000 Anwender besuchen. In Peak-Zeiten rufen die Website aber einige Stunden lang mehrere tausend Besucher je Minute auf und treiben den Server dadurch regelmäßig an die Grenze der Leistungsfähigkeit. Nginx wurde als Caching-Server vorgeschaltet und der Cache mit insgesamt 1 GByte mit einer Verfallszeit von fünf Minuten komplett in den RAM-Speicher gelegt.

Durch diese Maßnahme werden 99 Prozent der Anfragen direkt aus dem Cache beantwortet, während das dahinter liegende Webserver-Konstrukt aus Apache, PHP und MySQL bei einer Load von 0,01 ausruhen konnte. Performance-Tests auf dem Cache ergaben 100 000 Requests/Sekunde bei 1000 parallelen Requests, ohne dass sich die Grundlast des Servers nennenswert verändert hätte. Damit kann selbst ein kleiner Denial-of-Service-Angriff schon Mal unbemerkt ins Leere laufen.

Gezielte Reinigung

Eine weitere Funktion, die sich mit dem Zusatzmodul Cache Purge [9] realisieren lässt, ist die Möglichkeit, den gesamten Cache oder nur Teile davon zu leeren. Damit kann man App-seitig den Caching-Server steuern und bei Änderungen die Cache-Inhalte mit dem nächsten Request neu aufbauen lassen. So lassen sich ideal APIs cachen, deren Antworten durch GET-Parameter beeinflusst und nicht ständig neu generiert werden müssen. Listing 2 zeigt ein Beispiel einer Proxy-Konfiguration.

Listing 2

Proxy-Cache-Konfiguration

 

Nginx bietet natürlich auch SSL-Verschlüsselung und kann via SNI (Server Name Indication) mit mehreren Zertifikaten pro Server umgehen. Weiterhin lassen sich HTTP-Header manipulieren oder unterdrücken und damit zu redefreudigen Application-Servern die Unsitte austreiben, sich unbedingt mit Version und womöglich geladenen Modulen zu melden.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019