Thema
- #nginx Konfiguration
Erstellt: 2024-09-26
Erstellt: 2024-09-26 21:20
Nginx ist eine Open-Source-Software, die häufig als Webserver oder Webproxyserver verwendet wird.
Mit der richtigen Konfiguration kann es statische Inhalte effizient bereitstellen.
In diesem Beitrag möchte ich einige wichtige Konfigurationseinstellungen dokumentieren.
Beim Laden einer Website werden viele Dateien wie JavaScript, Bilder, HTML und CSS vom Webserver heruntergeladen.
Anstatt diese Inhalte unkomprimiert zu übertragen, kann die gzip-Komprimierung die Datenmenge deutlich reduzieren.
Die Vorteile der gzip-Komprimierung sind:
- Reduzierung der Datenmenge und somit Einsparung von Bandbreite.
- Einsparung von Serverressourcen.
- Schnellere Ladezeiten für den Benutzer.
Allerdings kann die gzip-Komprimierung, da der Server die Komprimierung vor dem Senden der Inhalte durchführen muss, zu einer höheren CPU-Auslastung führen.
Es ist daher wichtig, vor der Implementierung in der Produktion zu testen, welche Dateitypen komprimiert werden sollen, welche Komprimierungsstufe verwendet werden soll und welche Dateigrößen komprimiert werden sollen.
Im Folgenden sind einige gzip-relevante Konfigurationseinstellungen aufgeführt:
* `gzip_vary` sorgt dafür, dass der Client sowohl die komprimierte als auch die unkomprimierte Version der Inhalte erhält, je nachdem ob er gzip unterstützt oder nicht. (Es wird angegeben, dass abhängig vom Client-Request-Header (Accept-Encoding) verschiedene Versionen des Inhalts bereitgestellt werden können.)
Nginx speichert die Antwort in einem Puffer, bevor er sie an den Client sendet.
Wenn der Webserver eine Antwort an einen Client sendet und der Client langsam ist, muss der Server auf die Datenübertragung warten (Netzwerk-Engpass).
Da dabei Serverressourcen verbraucht werden, wird ein Puffer verwendet, um die Antwort unabhängig von der Geschwindigkeit des Clients vorübergehend zu verarbeiten. Dies bietet folgende Vorteile:
- Optimierung der Serverauslastung
- Reduzierung von Netzwerk-Engpässen
※ Eine zu große Puffergröße kann zu Verzögerungen bei der Übertragung von Echtzeitdaten wie Text-Streaming führen. Daher sind Tests unerlässlich. Dies ist besonders wichtig für neuere KI-Dienste. Wenn Text-Streaming nicht funktioniert, überprüfen Sie unbedingt diese Einstellung.
Worker sind Prozesse, die Client-Anfragen bearbeiten. Man kann festlegen, wie viele Worker pro CPU-Kern verwendet werden sollen.
HTTP besteht normalerweise aus Anfrage - Verbindung - Antwort - Verbindungsende. Um die Ressourcen für mehrere Anfragen zu reduzieren, kann die Client-Verbindung aufrechterhalten werden. Dies ist die Keep-Alive-Einstellung.
Die beiden Einstellungen werden aus folgenden Gründen zusammengefasst:
Wenn der Server beispielsweise 4 Kerne hat, beträgt die theoretische Anzahl der möglichen Verbindungen 1.024 * 4 = 4.096.
(Dies kann je nach Ressourcen und Traffic-Situation ungenau sein)
Wenn 4.096 Clients gleichzeitig eine Verbindung herstellen und 65 Sekunden lang alle Keep-Alive-Verbindungen belegen,
kann der 4.097. Benutzer keine Verbindung herstellen, was zu Verzögerungen führen kann.
Wenn man also von stabilen Serverressourcen durch Auto-Scaling ausgeht, können diese Einstellungen bei Ereignissen indirekt zu Antwortverzögerungen beitragen.
Einige Einstellungen wie der Proxy-Puffer können pro angeforderter URL angewendet werden.
* Einige Einstellungen wie Keep-Alive werden auf HTTP/Server-Ebene angewendet und können nicht pro Block konfiguriert werden.
server {
listen 80;
server_name example.com;
Mit diesen Einstellungen kann die Web-Performance optimiert werden. Führen Sie ausreichend Tests mit verschiedenen Testfällen durch, um die Serverleistung zu optimieren!
* Die Änderungen an der Nginx-Konfiguration können in der Regel ohne Server-Ausfallzeiten angewendet werden und sind daher sehr zuverlässig.
Kommentare0