La publication de la version principale de nginx 1.29.6 a eu lieu, poursuivant le développement de nouvelles fonctionnalités. Dans la branche stable maintenue en parallèle, 1.28.x, seules les modifications liées à la correction de bogues graves et de vulnérabilités sont apportées. À l'avenir, une branche stable 1.30 sera formée sur la base de la branche principale 1.29.x. Le code du projet est écrit en C et est distribué sous la licence BSD.
Dans cette nouvelle version, il est possible de lier les sessions des clients aux mêmes serveurs dans un groupe. Trois méthodes sont disponibles : « cookie » — transmission des données sur le choix effectué, le serveur via le cookie spécifié ; « route » — le serveur proxy assigne une route au client lors de la réception de la première requête ; « learn » — nginx analyse les réponses du serveur en amont et mémorise les sessions initiées par le serveur. Pour configurer la liaison, la directive « sticky » a été ajoutée au bloc « upstream » du module « http », et les paramètres « route » et « drain » ont été ajoutés à la directive « server ». # Le cookie srv_id assigne le serveur « a » ou « b ». upstream backend { server backend1.example.com route=a; server backend2.example.com route=b; sticky cookie srv_id expires=1h domain=.example.com path=\/; } # La route est obtenue à partir du cookie « JSESSIONID » ou, si cela n'est pas défini, à partir du paramètre jsessionid dans l'URI. map $cookie_jsessionid $route_cookie { ~.+\.(?P\w+)$ $route; } map $request_uri $route_uri { ~jsessionid=.+\.(?P\w+)$ $route; } upstream backend { server backend1.example.com route=a; server backend2.example.com route=b; sticky route $route_cookie $route_uri; } # Le serveur en amont crée une session en définissant le cookie « EXAMPLECOOKIE » lors de la première réponse. # Les autres requêtes avec ce cookie sont envoyées à un seul serveur. upstream backend { server backend1.example.com:8080; server backend2.example.com:8081; sticky learn create=$upstream_cookie_examplecookie lookup=$cookie_examplecookie zone=client_sessions:1m; }
Source : opennet.ru
