Po roku prac rozwojowych nowa stabilna gałąź wysoko wydajnego serwera HTTP i wieloprotokołowego serwera proxy , która zawiera zmiany zgromadzone w gałęzi głównej 1.15.x. W przyszłości wszystkie zmiany w stabilnej gałęzi 1.16 będą dotyczyć usuwania poważnych błędów i luk w zabezpieczeniach. Wkrótce utworzona zostanie główna gałąź nginx 1.17, w ramach której będzie kontynuowany rozwój nowych możliwości. Dla zwykłych użytkowników, którzy nie mają za zadanie zapewnienia zgodności z modułami zewnętrznymi, używać głównej gałęzi, na podstawie której co trzy miesiące tworzone są wydania komercyjnego produktu Nginx Plus.
Najbardziej zauważalne ulepszenia wprowadzone podczas tworzenia głównej gałęzi 1.15.x:
- Dodano możliwość użycia zmiennych w dyrektywach '' i '', co można wykorzystać do dynamicznego ładowania certyfikatów;
- Dodano możliwość ładowania certyfikatów SSL i kluczy prywatnych ze zmiennych bez używania plików pośrednich;
- W bloku '' wprowadzono nową dyrektywę '', dzięki której można zorganizować równoważenie obciążenia z losowym wyborem serwera do przekazywania połączenia;
- W module wprowadzono zmienną ,
, która określa najwyższą wersję protokołu SSL/TLS, którą obsługuje klient. Zmienna ta umożliwia do dostępu przy użyciu różnych protokołów zarówno z SSL, jak i bez SSL przez jeden port sieciowy podczas proxy'owania ruchu z użyciem modułów http i stream. Na przykład, aby zorganizować dostęp przez SSH i HTTPS przez jeden port 443, domyślnie można przekazywać na SSH, ale jeśli określona jest wersja SSL, przekazywać na HTTPS. - W module upstream dodano nową zmienną '', która wyświetla liczbę bajtów przesłanych do serwera grupy;
- W module w ramach jednego sesji dodano możliwość przetwarzania wielu przychodzących datagramów UDP od klienta;
- W module stream dodano dyrektywę '', określającą liczbę datagramów otrzymanych od klienta, po osiągnięciu której znika powiązanie między klientem a istniejącą sesją UDP. Po otrzymaniu określonej liczby datagramów następny datagram otrzymany od tego samego klienta rozpoczyna nową sesję;
- W dyrektywie listen pojawiła się możliwość określenia zakresów portów;
- Dodano dyrektywę '' w celu włączenia trybu przy użyciu TLSv1.3, który pozwala zachować wcześniej uzgodnione parametry połączenia TLS i zmniejszyć liczbę RTT do 2 podczas wznawiania wcześniej ustanowionego połączenia;
- Aby skonfigurować keepalive dla wychodzących połączeń (włączenie lub wyłączenie opcji SO_KEEPALIVE dla gniazd), dodano nowe dyrektywy:
- «konfiguruje zachowanie «TCP keepalive» dla wychodzących połączeń do serwera proxy;
- «konfiguruje zachowanie «TCP keepalive» dla wychodzących połączeń do serwera FastCGI;
- «konfiguruje zachowanie «TCP keepalive» dla wychodzących połączeń do serwera gRPC;
- «konfiguruje zachowanie «TCP keepalive» dla wychodzących połączeń do serwera memcached;
- «konfiguruje zachowanie «TCP keepalive» dla wychodzących połączeń do serwera SCGI;
- «konfiguruje zachowanie «TCP keepalive» dla wychodzących połączeń do serwera uwsgi.
- Do dyrektywy « dodano nowy parametr «delay», który ustala limit, po osiągnięciu którego nadmiarowe żądania są opóźniane;
- W bloku «upstream» dodano nowe dyrektywy «keepalive_timeout» i «keepalive_requests» do określenia limitów dla Keepalive;
- Dyrektywa «ssl» została uznana za przestarzałą, a jej miejsce zajęła opcja «ssl» w dyrektywie «listen». Określenie brakujących certyfikatów SSL odbywa się teraz na etapie testowania konfiguracji przy użyciu dyrektywy «listen» z parametrem «ssl»;
- Przy użyciu dyrektywy reset_timedout_connection, po upływie limitu czasu połączenia, teraz są one zamykane z zastosowaniem kodu 444;
- Błędy SSL «http request», «https proxy request», «unsupported protocol» i «version too low» są teraz rejestrowane w logach z poziomem «info» zamiast «crit»;
- Dodano wsparcie dla metody poll w systemach Windows przy użyciu Windows Vista i nowszych;
- Zapewniono możliwość użycia przy kompilacji z biblioteką BoringSSL, a nie tylko z OpenSSL.
Źródło: opennet.ru
