Po roce vývoje byla představena nová stabilní verze vysoce výkonného HTTP serveru a mnohoprotokolového proxy serveru nginx 1.20.0, která zahrnuje změny nahromaděné v hlavní větvi 1.19.x. Další změny ve stabilní větvi 1.20 budou zaměřeny na odstranění závažných chyb a zranitelností. Brzy bude vytvořena hlavní větev nginx 1.21, ve které bude pokračováno ve vývoji nových funkcí. Pro běžné uživatele, kteří nemají za cíl zajistit kompatibilitu se třetími moduly, se doporučuje používat hlavní větev, na jejímž základě se každé tři měsíce vytvářejí verze komerčního produktu Nginx Plus.
Podle březnové zprávy společnosti Netcraft je nginx k dispozici na 20,15% všech aktivních webů (před rokem 19,56%, před dvěma lety 20,73%), což odpovídá druhému místu v této kategorii (podíl Apache činí 25,38% (před rokem 27,64%), Google – 10,09%, Cloudflare – 8,51%. Při zohlednění všech webů však nginx stále vede s podílem 35,34% na trhu (před rokem 36,91%, před dvěma lety – 27,52%), zatímco podíl Apache činí 25,98%, OpenResty (platforma založená na nginx a LuaJIT) – 6,55%, Microsoft IIS – 5,96%.
Mezi milionem nejnavštěvovanějších webů na světě představuje podíl nginx 25,55% (před rokem 25,54%, před dvěma lety 26,22%). V současnosti je pod nginxem řízeno přibližně 419 milionů webů (před rokem 459 milionů). Podle údajů W3Techs je nginx používán na 33,7% webů mezi miliónem nejnavštěvovanějších, v dubnu minulého roku tento údaj činil 31,9%, před dvěma lety 41,8% (pokles je vysvětlován přeřazením k samostatnému uskutečňování http serveru Cloudflare). Podíl Apache za rok klesl z 39,5% na 34%, a podíl Microsoft IIS z 8,3% na 7%. Podíl LiteSpeed vzrostl z 6,3% na 8,4%, a Node.js z 0,8% na 1,2%. V Rusku nginx používá 79,1% nejnavštěvovanějších webů (před rokem – 78,9%).
Nejvýznamnější vylepšení, která byla přidána během vytváření hlavní větve 1.19.x:
- Byla přidána možnost ověřování klientských certifikátů s využitím externích služeb na základě protokolu OCSP (Online Certificate Status Protocol). Pro zahrnutí kontroly byla navržena direktiva ssl_ocsp, pro nastavení velikosti cache – ssl_ocsp_cache, pro přepsání URL OCSP zpracovatele uvedeného v certifikátu – ssl_ocsp_responder.
- Součástí je modul ngx_stream_set_module, který umožňuje přiřadit hodnotu proměnné server { listen 12345; set $true 1; }
- Byla přidána direktiva proxy_cookie_flags pro určení flagů pro cookies v proxy připojeních. Například k přidání flagu "httponly" k cookie „one“ a pro všechny ostatní cookies flagy „nosecure“ a „samesite=strict“ lze použít konstrukci: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure samesite=strict;
Podobná direktiva userid_flags pro přidání flagů k cookies byla také implementována pro modul ngx_http_userid.
- Byly přidány direktivy „ssl_conf_command“, „proxy_ssl_conf_command“, „grpc_ssl_conf_command“ a „uwsgi_ssl_conf_command“, pomocí kterých lze nastavit libovolné parametry pro konfiguraci OpenSSL. Například pro prioritizaci šifrování ChaCha a rozšířené nastavení šifer TLSv1.3 lze uvést ssl_conf_command Options PrioritizeChaCha; ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
- Byla přidána direktiva „ssl_reject_handshake“, která předepisuje odmítnout všechny pokusy o vyjednávání SSL-připojení (například lze použít k odmítnutí všech požadavků s neznámými názvy hostitelů v poli SNI). server { listen 443 ssl; ssl_reject_handshake on; } server { listen 443 ssl; server_name example.com; ssl_certificate example.com.crt; ssl_certificate_key example.com.key; }
- Do poštovního proxy byla přidána direktiva proxy_smtp_auth, která umožňuje autentizaci uživatele na backendu pomocí příkazu AUTH a mechanismu PLAIN SASL.
- Byla přidána direktiva „keepalive_time“, která omezuje celkovou životnost každého keep-alive připojení, po jehož uplynutí bude připojení uzavřeno (neměnit s keepalive_timeout, který určuje dobu neaktivity, po které se keep-alive připojení uzavírá).
- Byla přidána proměnná $connection_time, přes kterou lze získat informace o délce připojení v sekundách s milisekundovou přesností.
- Do direktiv „proxy_cache_path“, „fastcgi_cache_path“, „scgi_cache_path“ a „uwsgi_cache_path“ byl přidán parametr „min_free“, který reguluje velikost cache na základě určení minimálního volného diskového prostoru.
- Direktivy „lingering_close“, „lingering_time“ a „lingering_timeout“ byly přizpůsobeny pro práci s HTTP/2.
- Kód zpracování připojení v HTTP/2 je přiblížen realizaci HTTP/1.x. Podpora jednotlivých nastavení „http2_recv_timeout“, „http2_idle_timeout“ a „http2_max_requests“ byla zrušena ve prospěch obecných direktiv „keepalive_timeout“ a „keepalive_requests“. Byla odstraněna nastavení „http2_max_field_size“ a „http2_max_header_size“, místo kterých je třeba použít „large_client_header_buffers“.
- Byla přidána nová volba příkazového řádku „-e“, která umožňuje zadat alternativní soubor pro zápis chybového logu, který bude použit místo logu zadaného v nastavení. Místo názvu souboru lze zadat speciální hodnotu stderr.
Zdroj: opennet.ru
