Die Ausgabe des Hauptzweigs nginx 1.29.6 wurde veröffentlicht, in der die Entwicklung neuer Möglichkeiten fortgesetzt wird. In den parallel unterstützten stabilen Zweig 1.28.x werden nur Änderungen vorgenommen, die mit der Behebung ernsthafter Fehler und Sicherheitsanfälligkeiten zusammenhängen. Zukünftig wird auf Basis des Hauptzweigs 1.29.x der stabile Zweig 1.30 gebildet. Der Projektcode ist in C geschrieben und wird unter der BSD-Lizenz veröffentlicht.
In der neuen Ausgabe wurde die Möglichkeit hinzugefügt, Client-Sitzungen an dieselben Server in der Gruppe zu binden. Es stehen drei Methoden zur Verfügung: „cookie“ – Übertragung von Daten über das ausgewählte Server über das angegebene Cookie; „route“ – Der Proxy-Server weist dem Client einen Weg zu, wenn die erste Anfrage eingeht; „learn“ – nginx analysiert die Antworten vom Upstream-Server und speichert die vom Server gestarteten Sitzungen. Um die Bindung einzustellen, wurde im Block „upstream“ des Moduls „http“ die Direktive „sticky“ hinzugefügt, und in die Direktive „server“ wurden die Parameter „route“ und „drain“ eingefügt. # Über Cookie srv_id wird der Server „a“ oder „b“ zugewiesen. upstream backend { server backend1.example.com route=a; server backend2.example.com route=b; sticky cookie srv_id expires=1h domain=.example.com path=\/; } # Die Route wird entweder aus dem Cookie „JSESSIONID“ entnommen oder, falls dieses nicht gesetzt ist, aus dem Parameter jsessionid in der 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; } # Der Upstream-Server erstellt eine Sitzung, indem er beim ersten Antwort Cookie „EXAMPLECOOKIE“ setzt. # Weitere Anfragen mit diesem Cookie werden an denselben zu einem Server. 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; }
Quelle: opennet.ru
