Po roku rozwoju reprezentowany przez nowa stabilna gałąź wysokowydajnego serwera HTTP i wieloprotokołowego serwera proxy nginx 1.16.0, który wchłonął zmiany zgromadzone w głównej gałęzi 1.15.x. W przyszłości wszystkie zmiany w stabilnej gałęzi 1.16 będą związane z eliminacją poważnych błędów i podatności. Wkrótce powstanie główna gałąź nginx 1.17, w ramach której kontynuowany będzie rozwój nowych funkcji. Dla zwykłych użytkowników, którzy nie mają za zadanie zapewnić kompatybilności z modułami firm trzecich, zalecane korzystaj z głównej gałęzi, na bazie której co trzy miesiące powstają wydania komercyjnego produktu Nginx Plus.
Najbardziej godne uwagi ulepszenia dodane podczas opracowywania gałęzi upstream 1.15.x:
Dodano możliwość używania zmiennych w dyrektywach 'ssl_certificate' I 'ssl_certificate_key', którego można używać do dynamicznego ładowania certyfikatów;
Dodano możliwość ładowania certyfikatów SSL i tajnych kluczy ze zmiennych bez użycia plików pośrednich;
W bloku”pod prąd» nowa dyrektywa wdrożona «przypadkowy„, za pomocą którego można zorganizować równoważenie obciążenia z losowym wyborem serwera do przekazywania połączenia;
W module ngx_stream_ssl_preread zaimplementowana zmienna Protokół $ssl_preread_protocol,
który określa najwyższą wersję protokołu SSL/TLS obsługiwaną przez klienta. Zmienna pozwala tworzyć konfiguracje do dostępu przy użyciu różnych protokołów z i bez SSL przez jeden port sieciowy podczas ruchu proxy za pomocą modułów http i strumieniowych. Na przykład, aby zorganizować dostęp przez SSH i HTTPS przez jeden port, port 443 może być domyślnie przekierowany do SSH, ale jeśli zdefiniowano wersję SSL, przekieruj do HTTPS.
Do modułu upstream dodano nową zmienną „$upstream_bytes_sent", który wyświetla liczbę bajtów przesłanych do serwera grupy;
Do modułu strumień w ramach jednej sesji dodano możliwość przetwarzania kilku przychodzących datagramów UDP od klienta;
Dyrektywa”żądania_proxy", określa liczbę datagramów otrzymanych od klienta, po osiągnięciu której powiązanie między klientem a istniejącą sesją UDP zostaje usunięte. Po odebraniu określonej liczby datagramów, kolejny datagram otrzymany od tego samego klienta rozpoczyna nową sesję;
Dyrektywa Listen ma teraz możliwość określenia zakresów portów;
Dodano dyrektywę „ssl_early_data» aby włączyć tryb 0-RTT przy korzystaniu z protokołu TLSv1.3, który umożliwia zapisanie wcześniej wynegocjowanych parametrów połączenia TLS i zmniejszenie liczby RTT do 2 przy wznawianiu wcześniej nawiązanego połączenia;
Dodano nowe dyrektywy umożliwiające skonfigurowanie funkcji Keepalive dla połączeń wychodzących (włączenie lub wyłączenie opcji SO_KEEPALIVE dla gniazd):
«proxy_socket_keepalive" - konfiguruje zachowanie "TCP keepalive" dla połączeń wychodzących z serwerem proxy;
«fastcgi_socket_keepalive" - konfiguruje zachowanie "TCP keepalive" dla połączeń wychodzących do serwera FastCGI;
«grpc_socket_keepalive" - konfiguruje zachowanie "TCP keepalive" dla połączeń wychodzących do serwera gRPC;
«memcached_socket_keepalive" - konfiguruje zachowanie "TCP keepalive" dla połączeń wychodzących z serwerem memcached;
«scgi_socket_keepalive" - konfiguruje zachowanie "TCP keepalive" dla połączeń wychodzących z serwerem SCGI;
«uwsgi_socket_keepalive" - konfiguruje zachowanie "TCP keepalive" dla połączeń wychodzących z serwerem uwsgi.
W dyrektywie”limit_req" dodano nowy parametr „opóźnienie”, który określa limit, po przekroczeniu którego nadmiarowe żądania są opóźniane;
Do bloku „upstream” dodano nowe dyrektywy „keepalive_timeout” i „keepalive_requests”, aby ustawić limity dla Keepalive;
Dyrektywa „ssl” została uznana za przestarzałą i zastąpiona parametrem „ssl” w dyrektywie „listen”. Brakujące certyfikaty SSL są teraz wykrywane na etapie testowania konfiguracji, gdy używasz dyrektywy „listen” z parametrem „ssl” w ustawieniach;
Podczas korzystania z dyrektywy reset_timedout_connection połączenia są teraz zamykane kodem 444 po upływie limitu czasu;
Błędy SSL „żądanie http”, „żądanie proxy https”, „nieobsługiwany protokół” i „za niska wersja” są teraz wyświetlane w dzienniku z poziomem „info” zamiast „krytyczny”;
Dodano obsługę metody odpytywania w systemach Windows podczas korzystania z systemu Windows Vista i nowszych;
Możliwość wykorzystania TLSv1.3 podczas budowania z biblioteką BoringSSL, a nie tylko OpenSSL.