Nach einem Jahr Entwicklung neue stabile Version eines leistungsfähigen HTTP-Servers und einesmehrprotokollfähigen Proxy-Servers , die alle Änderungen integriert, die im Rahmen der Hauptversion 1.17.x gesammelt wurden. Zukünftig werden alle Änderungen in der stabilen Version 1.18 darauf abzielen, schwerwiegende Fehler und Sicherheitsanfälligkeiten zu beheben. In naher Zukunft wird die Hauptversion nginx 1.19 gebildet, in deren Rahmen die Entwicklung neuer Möglichkeiten fortgesetzt wird. Für normale Nutzer, die keine Anforderungen an die Kompatibilität mit Drittmodulen haben, sollten die Hauptversion verwenden, auf deren Basis alle drei Monate neue Versionen des kommerziellen Produkts Nginx Plus veröffentlicht werden.
Entsprechend der von Netcraft wird nginx auf 19,56 % aller aktiven Webseiten verwendet (vor einem Jahr 20,73 %, vor zwei Jahren 21,02 %), was dem zweiten Platz in dieser Kategorie entspricht (der Anteil von Apache beträgt 27,64 %, Google — 10,03 %, Microsoft IIS — 4,77 %). Betrachtet man jedoch alle Webseiten, bleibt nginx führend und hat einen Marktanteil von 36,91 % (vor einem Jahr 27,52 %), während der Anteil von Apache 24,73 % beträgt, Microsoft IIS — 12,85 %, Google — 3,42 %.
Unter den millionen meistbesuchten Webseiten weltweit beträgt der Anteil von nginx 25,54 % (vor einem Jahr 26,22 %, vor zwei Jahren 23,76 %). Derzeit betreibt nginx etwa 459 Millionen Webseiten (vor einem Jahr 397 Millionen). Laut W3Techs wird nginx auf 31,9 % der Webseiten unter den millionen meistbesuchten verwendet, im April des letzten Jahres betrug dieser Wert 41,8 %, davor 38 % (der Rückgang erklärt sich durch die Separierung der HTTP-Server von Cloudflare). Der Anteil von Apache ist im vergangenen Jahr von 43,6 % auf 38,9 % gesunken, während der Anteil von Microsoft IIS von 8,6 % auf 8,3 % gefallen ist. In Russland benutzt nginx 78,9 % der meistbesuchten Webseiten (vor einem Jahr — 81 %).
Die auffälligsten Verbesserungen, die im Rahmen der Hauptversion 1.17.x umgesetzt wurden:
- Direktive hinzugefügt , die den Testlauf aktiviert, in dem keine Einschränkungen für die Anfrageverarbeitung (ohne Rate Limiting) angewendet werden, aber die Anzahl der Anfragen, die die Limits überschreiten, im gemeinsamen Speicher weiter verfolgt wird;
- Direktive hinzugefügt , die das Modul ngx_http_limit_conn_module in den Testlauf versetzt, bei dem die Anzahl der Verbindungen nicht begrenzt ist, aber gezählt wird;
- Die Direktive „„ wurde hinzugefügt, die eine Verzögerung für nicht autorisierte Anfragen mit dem Antwortcode 401 ermöglicht, um die Intensität von Passwort-Cracking zu verringern und Schutz vor , die mit der Zeitmessung von Operationen (Timing-Angriff) bei Systemen zu tun haben, auf die der Zugang eingeschränkt ist , oder (JSON Web Token);
- Unterstützung für Variablen in den Direktiven «limit_rate» und «limit_rate_after» sowie in den Direktiven «proxy_upload_rate» und «proxy_download_rate» des Moduls Stream hinzugefügt;
- In der Direktive wurde die Unterstützung für die Verwendung einer Variablen im Parameter, der die Adresse definiert, hinzugefügt. Wenn die Adresse als Domainname angegeben ist, wird der Name in den beschriebenen Servergruppen gesucht, und falls nicht gefunden, wird er mit dem Resolver bestimmt;
- Neue Variablen hinzugefügt und , die die Adresse und den Port des Servers enthalten, die aus dem PROXY-Protokoll-Header erhalten wurden;
- Im Modul eine Variable hinzugefügt , die das Ergebnis der Verbindungseinschränkung speichert: PASSED, REJECTED oder REJECTED_DRY_RUN;
- Im Modul eine Variable hinzugefügt , die das Ergebnis der Anfragegeschwindigkeitsbegrenzung speichert: PASSED, DELAYED, REJECTED, DELAYED_DRY_RUN oder REJECTED_DRY_RUN;
- Standardmäßig wurde der Modulaufbau ;
- Die Unterstützung für den Wechsel von benannten 'location'-Blöcken mittels der Methode $r->internal_redirect(), bereitgestellt vom eingebauten Perl-Interpreter, wurde hinzugefügt. Diese Methode beinhaltet jetzt die Verarbeitung von URIs mit escaped Zeichen;
- Bei Verwendung der Direktive «» im Einstellungsblock «upstream» zur Organisation der Lastverteilung mit Client-Bindung an den Server wird bei Angabe eines leeren Wertes für den Schlüssel jetzt der Modus der gleichmäßigen Lastverteilung (Round-Robin) aktiviert;
- Unterstützung für den Aufruf von ioctl(FIONREAD) hinzugefügt, wenn es verfügbar ist, um das Lesen aus einer schnellen Verbindung über längere Zeit zu vermeiden.
Quelle: opennet.ru
