De hoofdversie van nginx 1.25.3 is uitgebracht, waarin de ontwikkeling van nieuwe mogelijkheden voortzet. In de parallel ondersteunde stabiele tak 1.24.x worden alleen wijzigingen doorgevoerd die verband houden met het oplossen van ernstige fouten en kwetsbaarheden. In de toekomst zal op basis van de hoofdtak 1.25.x een stabiele tak 1.26 worden gevormd. De projectcode is geschreven in de programmeertaal C en wordt verspreid onder de BSD-licentie.
Onder de wijzigingen:
- De beveiliging tegen abnormale activiteiten van HTTP/2-clients is versterkt, en vooral tegen 'Rapid Reset'-DoS-aanvallen, waarbij een groot aantal onmiddellijk geresette stromen binnen één HTTP/2-verbinding wordt aangemaakt. In de standaardconfiguratie lopen dergelijke aanvallen tegen de limiet van het aantal verzoeken per verbinding 'keepalive_requests' (na elke 1000 verzoeken wordt de verbinding gereset) en de beperkingen 'limit_req'. Voor een snellere reactie op verzoeken via een groot aantal stromen is er een extra beperking toegevoegd die standaard voorkomt dat er meer dan 256 (2 * max_concurrent_streams) nieuwe stromen per verwerkingscyclus worden aangemaakt. Deze nieuwe beperking maakt het mogelijk om verzoeken te blokkeren voordat de totale limiet voor het aantal gelijktijdige stromen is bereikt, bijvoorbeeld wanneer stromen asynchroon worden verwerkt of worden gereset. Een soortgelijke wijziging is ook opgenomen in de release van angie 1.3.1 (een fork van nginx), die een week geleden is gepubliceerd.
- Buffer management used for the automatic detection of HTTP/2 connections has been improved.
- The performance of launching configurations with a large number of "location" directives has been increased.
- Een crash van de werkproces is opgelost die optrad bij het proberen te gebruiken van HTTP/2 zonder SSL.
- Onjuiste verwerking van de door de backend geretourneerde header 'Status' met een leeg toelichtingstekst is opgelost.
- Een geheuglek tijdens herconfiguratie, dat optrad bij compilatie met de PCRE2-bibliotheek, is verholpen.
- Een groot aantal correcties en verbeteringen met betrekking tot de ondersteuning van het HTTP/3-protocol is doorgevoerd.
Tegelijkertijd is njs 0.8.2 uitgebracht, de interpreter voor de programmeertaal JavaScript voor webserver nginx. De njs-interpreter implementeert de ECMAScript-standaarden en stelt je in staat de mogelijkheden van nginx uit te breiden voor het verwerken van verzoeken met behulp van scripts in de configuratie. Scripts kunnen in het configuratiebestand worden gebruikt om uitgebreide logica voor het verwerken van verzoeken te definiëren, configuraties te genereren, dynamisch antwoorden te genereren, verzoeken/antwoorden te wijzigen of snel tijdelijke oplossingen te creëren voor problemen in webapplicaties. In de nieuwe versie is een console-object toegevoegd dat methoden biedt zoals error(), info(), log(), time(), timeEnd() en warn(). In de fs-module is de methode fs.existsSync() toegevoegd.
Daarnaast is het vermeldenswaard dat de uitgave van de NGINX Unit 1.31.1 applicatieserver beschikbaar is, die een oplossing biedt voor het uitvoeren van webapplicaties in verschillende programmeertalen (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js en Java). Onder NGINX Unit kunnen meerdere applicaties in verschillende programmeertalen tegelijkertijd worden uitgevoerd, waarvan de opstartparameters dynamisch kunnen worden gewijzigd zonder dat het configuratiebestand hoeft te worden gewijzigd of opnieuw opgestart. Naast het verhelpen van fouten in de nieuwe versie is het in de Wasm-module toegestaan om gegevens met een grootte van meer dan 4 GB te uploaden, en bij het antwoord is het nu mogelijk om HTTP-statuscodes in te stellen.
Bron: opennet.ru
