Wir freuen uns, die Verfügbarkeit von NGINX Plus Release 30 (R30) bekannt zu geben. NGINXPlus basiert auf NGINX Open Source und ist die einzige All-in-One-Software mit Webserver, Load Balancer, Reverse-Proxy, Inhaltscache und API-Gateway.
Zu den neuen und erweiterten Funktionen in NGINX Plus R30 gehören:
Abgerundet wird die Version durch neue Funktionen und Fehlerbehebungen, die von NGINX Open Source übernommen wurden, sowie Updates für das NGINX JavaScript-Modul.
Notiz : Wenn Sie von einer anderen Version als NGINX Plus R29 aktualisieren, lesen Sie unbedingt den Abschnitt „Wichtige Verhaltensänderungen“ in früheren Ankündigungsblogs für alle Versionen zwischen Ihrer aktuellen und dieser.
„listen … http2“
Die Direktive „listen … http2“
ist in NGINX 1.25.1 veraltet. Die NGINX-Konfigurationsprüfung mit nginx -t
gibt eine entsprechende Warnung aus.
nginx -t
nginx: [warn] die Direktive „listen ... http2“ ist veraltet, verwenden Sie stattdessen die Direktive „http2“ in etc/nginx/nginx.conf :15
nginx: die Syntax der Konfigurationsdatei /etc/nginx/nginx.conf ist in Ordnung
nginx: Test der Konfigurationsdatei /etc/nginx/nginx.conf ist erfolgreich
Allen bestehenden Benutzern dieser Anweisung wird dringend empfohlen, NGINX zu aktualisieren und die Anweisung http2 zu verwenden, die HTTP/2 auf Serverbasis aktiviert.
Ändern Sie dies:
hören Sie 443 SSL http2;
Hierzu:
443 SSL abhören;
http2 ein;
Frühere Versionen von NGINX Plus verwendeten die Bibliothek „libmaxminddb“ aus dem Amazon Linux 2 EPEL-Repository, um das GeoIP2-Modul zu erstellen. Das EPEL-Repository stellt diese Bibliothek nicht mehr bereit und ist auch nicht nativ von der Amazon Linux 2-Distribution aus zugänglich. Daher ist das Modul in NGINX Plus R30 nicht mehr verfügbar, da es keine praktikable Möglichkeit gibt, es für Amazon Linux 2 zu erstellen.
Die Direktive mqtt_rewrite_buffer_size
, die zum Festlegen der Puffergröße zum Erstellen von MQTT-Nachrichten verwendet wird, wurde durch die Direktive mqtt_buffers
ersetzt. Mit der neuen Direktive können Sie die Anzahl der Puffer festlegen, die pro Verbindung zugewiesen werden können, sowie die Größe jedes Puffers angeben.
Die Versionsnummer der NGINX Plus-API wurde von 8 auf 9 aktualisiert, um die Hinzufügung der in „Verbindungstelemetrie pro Worker“ beschriebenen Metriken pro Worker widerzuspiegeln. Frühere Versionsnummern funktionieren weiterhin, aber die Ausgabe enthält keine Metriken, die in späteren API-Versionen hinzugefügt wurden.
Neue unterstützte Betriebssysteme:
Ältere Betriebssysteme entfernt:
Ältere Betriebssysteme, die veraltet sind und deren Entfernung in NGINX Plus R31 geplant ist:
HTTP/3 über QUIC war eine mit Spannung erwartete Funktion, die von vielen unserer Unternehmenskunden angefordert wurde, und wir freuen uns, sie offiziell in NGINX Plus R30 einzuführen. Dies ist eine neue Technologie und Implementierung, auf die wir uns auch in zukünftigen Versionen konzentrieren werden. Wir empfehlen NGINX Plus-Benutzern, es zunächst in einer Nicht-Produktionsumgebung auszuprobieren und uns wertvolles Feedback zu geben.
NGINX Plus verlässt sich für sichere Kommunikation und kryptografische Funktionen auf OpenSSL und nutzt die SSL/TLS-Bibliotheken, die mit den Betriebssystemen mitgeliefert werden. Da die TLS-Schnittstellen von QUIC zum Zeitpunkt dieser Veröffentlichung jedoch nicht von OpenSSL unterstützt werden, werden Bibliotheken von Drittanbietern benötigt, um die fehlende TLS-Funktionalität bereitzustellen, die von HTTP/3 benötigt wird.
Um dieses Problem zu lösen, hat das NGINX-Team eine OpenSSL-Kompatibilitätsschicht entwickelt, wodurch die Notwendigkeit entfällt, TLS-Bibliotheken von Drittanbietern wie quictls, BoringSSL und LibreSSL zu erstellen und bereitzustellen. Dies hilft dabei, das End-to-End-QUIC+HTTP/3-Erlebnis in NGINX zu verwalten, ohne die Belastung einer benutzerdefinierten TLS-Implementierung oder die Abhängigkeit von Zeitplänen und Roadmaps von Bibliotheken von Drittanbietern. Wir planen, die OpenSSL-Kompatibilitätsschicht in zukünftigen Versionen um weitere Funktionen und Optionen zu erweitern, beispielsweise um die Unterstützung von 0-RTT.
Hier ist die QUIC+HTTP/3-Konfiguration:
http {
log_format quic '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$http3"';
access_log logs/access.log quic;
server {
# für bessere Kompatibilität wird empfohlen
# denselben Port für quic und https zu verwenden
listen 8443 quic reuseport;
listen 8443 ssl;
ssl_certificate certs/example.com.crt;
ssl_certificate_key certs/example.com.key;
location / {
# erforderlich, damit Browser sie zum Quick-Port weiterleiten
add_header Alt-Svc 'h3=":8443"; ma=86400';
}
}
}
Die QUIC+HTTP/3-Unterstützung in NGINX Plus R30 ist als einzelne Binärdatei verfügbar – im Gegensatz zur experimentellen HTTP/3-Unterstützung, die in NGINX Plus R29 eingeführt wurde und für die es eine separate Binärdatei für Nginx Quic gab. Diese Verbesserung erleichtert die Bereitstellung der Funktionalität in Ihrer Umgebung.
Notiz: Mit NGINX Plus R30 beenden wir den Support und die Updates für die eigenständige QUIC-Binärdatei und planen, sie später in diesem Jahr als Download-Option zu entfernen.
NGINX Plus-Benutzer können jetzt die Gesamtzahl der Verbindungen pro Arbeitsprozess überwachen, um die Direktive „worker_connections“
entsprechend anzupassen. Diese Verbesserung gibt den Benutzern einen besseren Einblick in die Verteilung der Verbindungen unter den Mitarbeitern. Durch die Möglichkeit, Worker-Verbindungen zu optimieren, können Sie Ihre NGINX-Bereitstellung auch besser beurteilen.
Die Verbindungsmetriken pro Worker sind über die REST-API verfügbar. Um Verbindungsmetriken pro Worker abzurufen, verwenden Sie den Endpunkt …/api/9/workers
.
Um Verbindungsmetriken für einen einzelnen Worker abzurufen, verwenden Sie die …/api/9/workers/<Arbeitnehmer-ID>
Endpunkt. Die Worker-ID
hat einen 0-basierten Index.
Hier ist eine Beispielantwort:
{
{
"Ausweis": 0,
"pid": 2346,
„Verbindungen“: {
„akzeptiert“: 1,
„fallengelassen“: 0,
„aktiv“: 1,
„Leerlauf“: 0
},
„http“: {
„Anfragen“: {
„Gesamt“: 15,
„aktuell“: 1
}
}
},
{
"id": 1,
"pid": 1234,
„Verbindungen“: {
„akzeptiert“: 3,
„fallengelassen“: 0,
„aktiv“: 1,
„Leerlauf“: 0
},
„http“: {
„Anfragen“: {
„Gesamt“: 15,
„aktuell“: 1 } } }, ... }
Die Verbindungsmetriken pro Worker sind im NGINX Plus Live Activity Monitoring Dashboard verfügbar, wie unten gezeigt. Greifen Sie unter demo.nginx.com auf eine Live-Demo dieser Funktion zu.
Das Dashboard zeigt die folgenden Informationen zu NGINX Plus-Verbindungen und -Anfragen.
Verbindungen:
Anfragen:
Um die Bearbeitungszeit zur Problemlösung zu verkürzen, optimiert das Diagnosepaket den Prozess der Erfassung der Daten, die zur Fehlerbehebung in Ihrer NGINX-Umgebung erforderlich sind. Das Diagnosepaket trägt auch dazu bei, Unstimmigkeiten und Verzögerungen zu vermeiden, die mit der manuellen Anforderung und Erfassung der zur Fehlerbehebung erforderlichen Informationen verbunden sind, und gestaltet so die Interaktion zwischen NGINX Plus-Kunden und dem F5-Support effizienter.
Das Diagnosepaket sammelt:
ps
, lsof
, vmstat
usw.)systemd
usw.Mit der Ergänzung des Diagnosepakets möchten wir den Benutzern Transparenz darüber bieten, welche Befehle das Skript im Paket ausführt und welche Daten erfasst werden. Weitere Informationen finden Sie auf der Seite zum NGINX Plus-Diagnosepaket .
Notiz: Die Verfügbarkeit des Diagnosepakets wird als Teil der aktuellen NGINX Plus R30-Version angekündigt, das Diagnosepaket ist jedoch nicht wirklich von der Version abhängig. Zukünftig planen wir, es auf der Grundlage Ihres Feedbacks und des F5-Supports zu aktualisieren, um den Prozess der Datenerfassung zur Fehlerbehebung zu verbessern.
Dank der Verbesserungen beim Speicherverbrauch des Filtermoduls „Message Queuing Telemetry Transport“ (MQTT) ist der Durchsatz jetzt um das Vier- bis Fünffache gestiegen.
Die Direktive mqtt_rewrite_buffer_size
wurde entfernt. Stattdessen wird die neue Richtlinie mqtt_buffers <Anzahl> <Größe>
wurde eingeführt, um anzugeben, wie viele Puffer das Modul pro Verbindung zuordnen darf, zusammen mit der Größe jedes Puffers. Die Standardanzahl der Puffer beträgt 100 und die Standardgröße jedes Puffers beträgt 1024 Bytes, was den Standardwert der Variable mqtt_buffers zu <100> <1024>
macht.
NGINX Plus behält jetzt die Ablaufzeiten von DNS-Namen für dynamisch aufgelöste Upstream-Hosts über Neuladungen hinweg bei, sodass eine erneute Auflösung beim Neuladen der Konfiguration nicht mehr erforderlich ist. Vor diesem Update wurden DNS-Auflösungen für alle Upstreams ausgelöst. Mit diesem Update behält NGINX DNS-Auflösungen und Ablaufzeiten für alle Upstreams bei und löst DNS-Auflösungen beim Neuladen nur für neue oder geänderte Upstreams aus.
Diese Optimierung wirkt sich am stärksten auf NGINX-Umgebungen aus, die eine große Anzahl Upstream-Hosts enthalten. Wenn Ihre NGINX-Konfiguration 100 oder mehr Upstream-Hosts umfasst, sind die Optimierungen am deutlichsten.
NGINX Plus R30 basiert auf NGINX Open Source 1.25.1 und übernimmt Funktionsänderungen, Funktionen und Fehlerbehebungen seit der Veröffentlichung von NGINX Plus R29 (in NGINX 1.25.0 und 1.25.1).
Server_Push
wurde nur minimal angenommen und konnte nur in sehr begrenzten Anwendungsfällen genutzt werden. (Gemäß IETF 102-Referenzdokumentation wurde es nur in 0,04 % der Sitzungen verwendet. Gemäß RFC 913 war es „schwierig, es effektiv zu nutzen.“) HTTP/2-Server-Push wurde in Chrome Version 106 deaktiviert . Im Rahmen dieser Änderung wurden die Anweisungen http2_push
, http2_push_preload
und http2_max_concurrent_pushes
obsolet.SSL-
Direktive wird nicht mehr unterstützt. Die SSL-
Direktive wurde in NGINX 1.15.0 verworfen und durch den SSL-
Parameter der Listen-Direktive ersetzt. Die veraltete SSL-Direktive wurde jetzt entfernt.„listen … http2“
veraltet. Benutzern wird empfohlen, stattdessen die Direktive http2
zu verwenden.„listen port_num http2“
), können nur HTTP/2-Verbindungen hergestellt werden. Ein h2-Listening-Socket unterstützt sowohl HTTP/1.1 als auch HTTP/2 mit Protokollaushandlung über ALPN. In der vorhandenen Implementierung schlagen HTTP/1.1-Clients jedoch am Socket fehl, wodurch die Verwendung von HTTP Upgrade als Mittel zum Aushandeln des Protokolls verhindert wird. Diese Änderung ermöglicht die gleichzeitige Unterstützung von HTTP/1.1 und HTTP/2 auf einem einfachen TCP-Socket bei Verwendung von HTTP/2.$sent_http_*
ist aktiviert. Ein Defekt in der Logik zur Auswertung von Multiheader- $sent_http_-
Variablen führte zu potenziellen Pufferüberläufen, wenn bestimmte Elemente gelöscht wurden, aber in der verknüpften Liste verblieben. Dieses Problem trat auf, wenn Module von Drittanbietern zum Überschreiben von Multiheaderwerten verwendet wurden. Das Update führt verfeinerte Grenzwertprüfungen ein, die eine sicherere Handhabung und Auswertung dieser Variablen gewährleisten.quic_mtu
wurde entfernt.Der http3-Parameter der Listen-
Direktive wurde entfernt.Segmentierungsfehler
behoben, wenn die Zuweisung einer Studienliste mit regulären Ausdrücken (Regex) fehlschlägt.Die vollständige Liste der neuen Änderungen, Funktionen, Fehlerbehebungen und Problemumgehungen aus den letzten Versionen finden Sie in der Datei NGINX CHANGES .
NGINX Plus R30 enthält Änderungen aus der NGINX JavaScript (njs)-Modulversion 0.8.0.
ngx.build , ngx.conf_file_path , ngx.error_log_path , ngx.prefix , ngx.version , ngx.version_number
und ngx.worker_id
.js_shared_dict_zone
für http und Stream , die die Deklaration eines zwischen Arbeitsprozessen gemeinsam genutzten Wörterbuchs ermöglicht.Array.from(), Array.prototype.toSorted(), Array.prototype.toSpliced(), Array.prototype.toReversed()
.%TypedArray%.prototype.toSorted(), %TypedArray%.prototype.toSpliced(), %TypedArray%.prototype.toReversed()
.Algorithmus, extrahierbar, Typ, Verwendungen
.R.requestBody()
wurde aus dem HTTP-Modul entfernt, da es in Version 0.5.0 veraltet war. Stattdessen sollte die Eigenschaft r.requestBuffer
oder r.requestText
verwendet werden.r.responseBody()
wurde aus dem HTTP-Modul entfernt, das in Version 0.5.0 veraltet war. Stattdessen sollte die Eigenschaft r.responseBuffer
oder r.responseText
verwendet werden.HTTP-
Modul wird eine Ausnahme in r.internalRedirect()
ausgelöst.dem Retval-
Argument bereitgestellt. Diese Änderung unterbricht die Kompatibilität mit der C-Erweiterung für NJS und erfordert eine Änderung des Codes.String.bytesFrom(), String.prototype.fromBytes(), String.prototype.fromUTF8(), String.prototype.toBytes(), String.prototype.toUTF8(), String.prototype.toString(Kodierung)
.R.status
-Setter beim Filtern im HTTP-
Modul behoben.Location-
Headers im HTTP-
Modul behoben.сrypto.getRandomValues()
behoben.Date.parse()
mit ISO-8601-Format und UTC-Zeitversatz behoben.Eine umfassende Liste aller Funktionen, Änderungen und Fehlerbehebungen finden Sie im njs- Änderungsprotokoll .
Wenn Sie NGINX Plus verwenden, empfehlen wir Ihnen dringend, so bald wie möglich auf NGINX Plus R30 zu aktualisieren. Zusätzlich zu den ganzen tollen neuen Funktionen erhalten Sie auch mehrere zusätzliche Fehlerbehebungen und Verbesserungen. Und wenn Sie auf dem neuesten Stand sind, kann NGINX Ihnen helfen, wenn Sie ein Support-Ticket erstellen müssen.
Wenn Sie NGINX Plus noch nicht ausprobiert haben, empfehlen wir Ihnen, es auszuprobieren. Sie können es für Anwendungsfälle in den Bereichen Sicherheit, Lastausgleich und API-Gateway oder als vollständig unterstützten Webserver mit erweiterten Überwachungs- und Verwaltungs-APIs verwenden. Beginnen Sie noch heute mit einer kostenlosen 30-Tage-Testversion .
„Dieser Blogbeitrag kann auf Produkte verweisen, die nicht mehr verfügbar und/oder nicht mehr unterstützt werden. Die aktuellsten Informationen zu verfügbaren F5 NGINX-Produkten und -Lösungen finden Sie in unserer NGINX-Produktfamilie . NGINX ist jetzt Teil von F5. Alle vorherigen NGINX.com-Links werden auf ähnliche NGINX-Inhalte auf F5.com umgeleitet."