ืžื”ื“ื•ืจืช nginx 1.20.0

ืœืื—ืจ ืฉื ื” ืฉืœ ืคื™ืชื•ื—, ื”ื•ืฆื’ ืกื ื™ืฃ ื™ืฆื™ื‘ ื—ื“ืฉ ืฉืœ ืฉืจืช ื”-HTTP ื‘ืขืœ ื”ื‘ื™ืฆื•ืขื™ื ื”ื’ื‘ื•ื”ื™ื ื•ืฉืจืช ื”-Proxy ืžืจื•ื‘ื” ืคืจื•ื˜ื•ืงื•ืœื™ื nginx 1.20.0, ื”ืžืฉืœื‘ ืืช ื”ืฉื™ื ื•ื™ื™ื ืฉื”ืฆื˜ื‘ืจื• ื‘ืกื ื™ืฃ ื”ืจืืฉื™ 1.19.x. ื‘ืขืชื™ื“, ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ื‘ืขื ืฃ ื”ื™ืฆื™ื‘ 1.20 ื™ื”ื™ื• ืงืฉื•ืจื™ื ืœื‘ื™ื˜ื•ืœ ืฉื’ื™ืื•ืช ื•ืคื’ื™ืขื•ื™ื•ืช ื—ืžื•ืจื•ืช. ื‘ืงืจื•ื‘ ื™ื•ื•ืฆืจ ื”ืขื ืฃ ื”ืจืืฉื™ ืฉืœ nginx 1.21, ืฉื‘ื• ื™ืžืฉืš ื”ืคื™ืชื•ื— ืฉืœ ืชื›ื•ื ื•ืช ื—ื“ืฉื•ืช. ืœืžืฉืชืžืฉื™ื ืจื’ื™ืœื™ื ืฉืื™ืŸ ืœื”ื ืืช ื”ืžืฉื™ืžื” ืœื”ื‘ื˜ื™ื— ืชืื™ืžื•ืช ืขื ืžื•ื“ื•ืœื™ื ืฉืœ ืฆื“ ืฉืœื™ืฉื™, ืžื•ืžืœืฅ ืœื”ืฉืชืžืฉ ื‘ืกื ื™ืฃ ื”ืจืืฉื™, ืฉืขืœ ื‘ืกื™ืกื• ื ื•ืฆืจื•ืช ืžื”ื“ื•ืจื•ืช ืฉืœ ื”ืžื•ืฆืจ ื”ืžืกื—ืจื™ Nginx Plus ื›ืœ ืฉืœื•ืฉื” ื—ื•ื“ืฉื™ื.

ืขืœ ืคื™ ื“ื•ื— ืžืืจืก ืฉืœ Netcraft, nginx ื ืžืฆื ื‘ืฉื™ืžื•ืฉ ื‘-20.15% ืžื›ืœืœ ื”ืืชืจื™ื ื”ืคืขื™ืœื™ื (ืœืคื ื™ ืฉื ื” 19.56%, ืœืคื ื™ ืฉื ืชื™ื™ื 20.73%), ืžื” ืฉืžืชืื™ื ืœืžืงื•ื ื”ืฉื ื™ ื‘ืคื•ืคื•ืœืจื™ื•ืช ื‘ืงื˜ื’ื•ืจื™ื” ื–ื• (ื”ื ืชื— ืฉืœ Apache ืžืชืื™ื ืœ-25.38% (ืœืคื ื™ ืฉื ื” 27.64%), ื’ื•ื’ืœ - 10.09%, Cloudflare - 8.51%. ื‘ืžืงื‘ื™ืœ, ื›ืฉื‘ื•ื—ื ื™ื ืืช ื›ืœ ื”ืืชืจื™ื, nginx ืฉื•ืžืจืช ืขืœ ื”ื”ื•ื‘ืœื” ืฉืœื” ื•ืชื•ืคืกืช 35.34% ืžื”ืฉื•ืง (ืœืคื ื™ ืฉื ื” 36.91%, ืœืคื ื™ ืฉื ืชื™ื™ื - 27.52%), ื‘ืขื•ื“ ืฉื”ื ืชื— ืฉืœ Apache ืชื•ืื ืœ-25.98%, OpenResty (ืคืœื˜ืคื•ืจืžื” ืžื‘ื•ืกืกืช nginx ื•-LuaJIT.) - 6.55%, Microsoft IIS - 5.96%.

ื‘ื™ืŸ ืžื™ืœื™ื•ืŸ ื”ืืชืจื™ื ื”ืžื‘ื•ืงืจื™ื ื‘ื™ื•ืชืจ ื‘ืขื•ืœื, ื—ืœืงื” ืฉืœ nginx ื”ื•ื 25.55% (ืœืคื ื™ ืฉื ื” 25.54%, ืœืคื ื™ ืฉื ืชื™ื™ื 26.22%). ื ื›ื•ืŸ ืœืขื›ืฉื™ื•, ื›-419 ืžื™ืœื™ื•ืŸ ืืชืจื™ื ืžืจื™ืฆื™ื ืืช Nginx (459 ืžื™ืœื™ื•ืŸ ืœืคื ื™ ืฉื ื”). ืœืคื™ W3Techs, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘-nginx ื‘-33.7% ืžื”ืืชืจื™ื ืžืชื•ืš ืžื™ืœื™ื•ืŸ ื”ื’ื•ืœืฉื™ื ื‘ื™ื•ืชืจ, ื‘ืืคืจื™ืœ ืืฉืชืงื“ ืขืžื“ ื”ื ืชื•ืŸ ื”ื–ื” ืขืœ 31.9%, ื‘ืฉื ื” ืฉืœืคื ื™ ื›ืŸ - 41.8% (ื”ื™ืจื™ื“ื” ืžื•ืกื‘ืจืช ื‘ืžืขื‘ืจ ืœื—ืฉื‘ื•ื ืื•ืช ื ืคืจื“ืช ืฉืœ ื”-Cloudflare http ืฉืจืช). ืžื ื™ื™ืช ืืคืืฆ'ื™ ื™ืจื“ื” ื‘ืžื”ืœืš ื”ืฉื ื” ืž-39.5% ืœ-34%, ื•ืžื ื™ื™ืช Microsoft IIS ืž-8.3% ืœ-7%. ื—ืœืงื” ืฉืœ LiteSpeed โ€‹โ€‹ืฆืžื— ืž-6.3% ืœ-8.4%, ื•-Node.js ืž-0.8% ืœ-1.2%. ื‘ืจื•ืกื™ื”, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘-nginx ื‘-79.1% ืžื”ืืชืจื™ื ื”ืžื‘ื•ืงืจื™ื ื‘ื™ื•ืชืจ (ืœืคื ื™ ืฉื ื” - 78.9%).

ื”ืฉื™ืคื•ืจื™ื ื”ื‘ื•ืœื˜ื™ื ื‘ื™ื•ืชืจ ืฉื ื•ืกืคื• ื‘ืžื”ืœืš ื”ืคื™ืชื•ื— ืฉืœ ืขื ืฃ 1.19.x ื‘ืžืขืœื” ื”ื–ืจื:

  • ื ื•ืกืคื” ื”ื™ื›ื•ืœืช ืœืืžืช ืชืขื•ื“ื•ืช ืœืงื•ื— ื‘ืืžืฆืขื•ืช ืฉื™ืจื•ืชื™ื ื—ื™ืฆื•ื ื™ื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ืคืจื•ื˜ื•ืงื•ืœ OCSP (Online Certificate Status Protocol). ื›ื“ื™ ืœืืคืฉืจ ืืช ื”ื‘ื“ื™ืงื”, ืžื•ืฆืขืช ื”ื”ื ื—ื™ื” ssl_ocsp, ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืืช ื’ื•ื“ืœ ื”ืžื˜ืžื•ืŸ - ssl_ocsp_cache, ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืžื—ื“ืฉ ืืช ื›ืชื•ื‘ืช ื”ืืชืจ ืฉืœ ื”ืžื˜ืคืœ OCSP ืฉืฆื•ื™ืŸ ื‘ืื™ืฉื•ืจ - ssl_ocsp_responder.
  • ืžื•ื“ื•ืœ ngx_stream_set_module ื›ืœื•ืœ, ื”ืžืืคืฉืจ ืœืš ืœื”ืงืฆื•ืช ืขืจืš ืœืฉืจืช ื”ืžืฉืชื ื” { listen 12345; ื”ื’ื“ืจ $true 1; }
  • ื ื•ืกืคื” ื”ื•ืจืืช proxy_cookie_flags ืœืฆื™ื•ืŸ ื“ื’ืœื™ื ืขื‘ื•ืจ ืงื•ื‘ืฆื™ Cookie ื‘ื—ื™ื‘ื•ืจื™ ืคืจื•ืงืกื™. ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื”ื•ืกื™ืฃ ืืช ื”ื“ื’ืœ "httponly" ืœ-Cookie "one", ื•ืืช ื”ื“ื’ืœื™ื "nosecure" ื•-"samesite=strict" ืขื‘ื•ืจ ื›ืœ ืฉืืจ ื”ืขื•ื’ื™ื•ืช, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืžื‘ื ื” ื”ื‘ื: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure samesite=strict;

    ื”ื ื—ื™ื™ืช userid_flags ื“ื•ืžื” ืœื”ื•ืกืคืช ื“ื’ืœื™ื ืœืงื•ื‘ืฆื™ Cookie ืžื™ื•ืฉืžืช ื’ื ืขื‘ื•ืจ ืžื•ื“ื•ืœ ngx_http_userid.

  • ื ื•ืกืคื• ื”ื ื—ื™ื•ืช "ssl_conf_command", "proxy_ssl_conf_command", "grpc_ssl_conf_command" ื•-"uwsgi_ssl_conf_command", ืฉื‘ืืžืฆืขื•ืชืŸ ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืคืจืžื˜ืจื™ื ืฉืจื™ืจื•ืชื™ื™ื ืœื”ื’ื“ืจืช OpenSSL. ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœืชืขื“ืฃ ืฆืคื ื™ ChaCha ื•ืชืฆื•ืจื” ืžืชืงื“ืžืช ืฉืœ ืฆืคื ื™ TLSv1.3, ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ssl_conf_command Options PrioritizeChaCha; ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
  • ื ื•ืกืคื” ื”ื ื—ื™ื™ืช "ssl_reject_handshake", ื”ืžื•ืจื” ืœื“ื—ื•ืช ืืช ื›ืœ ื”ื ื™ืกื™ื•ื ื•ืช ืœื ื”ืœ ืžืฉื ื•ืžืชืŸ ืขืœ ื—ื™ื‘ื•ืจื™ SSL (ืœื“ื•ื’ืžื”, ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื• ื›ื“ื™ ืœื“ื—ื•ืช ืืช ื›ืœ ื”ืฉื™ื—ื•ืช ืขื ืฉืžื•ืช ืžืืจื—ื™ื ืœื ื™ื“ื•ืขื™ื ื‘ืฉื“ื” SNI). ืฉืจืช { ื”ืื–ื ื” 443 ssl; ssl_reject_shake on; } ืฉืจืช { ื”ืื–ื ื” 443 ssl; server_name example.com; ssl_certificate example.com.crt; ssl_certificate_key example.com.key; }
  • ื”ื”ื ื—ื™ื” proxy_smtp_auth ื ื•ืกืคื” ืœ-proxy ื”ื“ื•ืืจ, ื•ืžืืคืฉืจืช ืœืš ืœืืžืช ืืช ื”ืžืฉืชืžืฉ ื‘-backend ื‘ืืžืฆืขื•ืช ืคืงื•ื“ืช AUTH ื•ืžื ื’ื ื•ืŸ PLAIN SASL.
  • ื ื•ืกืคื” ื”ื”ื ื—ื™ื” "keepalive_time", ื”ืžื’ื‘ื™ืœื” ืืช ืžืฉืš ื”ื—ื™ื™ื ื”ื›ื•ืœืœ ืฉืœ ื›ืœ ื—ื™ื‘ื•ืจ Keep-alive, ืฉืœืื—ืจื™ื• ื™ื™ืกื’ืจ ื”ื—ื™ื‘ื•ืจ (ืœื ืœื”ืชื‘ืœื‘ืœ ืขื keepalive_timeout, ืฉืžื’ื“ื™ืจ ืืช ื–ืžืŸ ื—ื•ืกืจ ื”ืคืขื™ืœื•ืช ืฉืื—ืจื™ื• ื™ื™ืกื’ืจ ื—ื™ื‘ื•ืจ Keep-alive).
  • ื ื•ืกืฃ ืžืฉืชื ื” $connection_time, ืฉื“ืจื›ื• ื ื™ืชืŸ ืœืงื‘ืœ ืžื™ื“ืข ืขืœ ืžืฉืš ื”ื—ื™ื‘ื•ืจ ื‘ืฉื ื™ื•ืช ื‘ื“ื™ื•ืง ืฉืœ ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื”.
  • ืคืจืžื˜ืจ "min_free" ื ื•ืกืฃ ืœื”ื ื—ื™ื•ืช "proxy_cache_path", "fastcgi_cache_path", "scgi_cache_path" ื•-"uwsgi_cache_path", ืืฉืจ ืžืกื“ื™ืจ ืืช ื’ื•ื“ืœ ื”ืžื˜ืžื•ืŸ ืขืœ ืกืžืš ืงื‘ื™ืขืช ื”ื’ื•ื“ืœ ื”ืžื™ื ื™ืžืœื™ ืฉืœ ืฉื˜ื— ื“ื™ืกืง ืคื ื•ื™.
  • ื”ื ื—ื™ื•ืช "ื”ืชืžื”ืžื”ื•ืช_ืกื’ื•ืจ", "ื–ืžืŸ_ืžืฉื”ื”" ื•-"ื–ืžืŸ ืงืฆื•ื‘_ืžืฉื”ื”" ื”ื•ืชืืžื• ืœืขื‘ื•ื“ื” ืขื HTTP/2.
  • ืงื•ื“ ืขื™ื‘ื•ื“ ื”ื—ื™ื‘ื•ืจ ื‘-HTTP/2 ืงืจื•ื‘ ืœืžื™ืžื•ืฉ HTTP/1.x. ื”ืชืžื™ื›ื” ื‘ื”ื’ื“ืจื•ืช ื”ืื™ืฉื™ื•ืช "http2_recv_timeout", "http2_idle_timeout" ื•-"http2_max_requests" ื”ื•ืคืกืงื” ืœื˜ื•ื‘ืช ื”ื”ื ื—ื™ื•ืช ื”ื›ืœืœื™ื•ืช "keepalive_timeout" ื•-"keepalive_requests". ื”ื”ื’ื“ืจื•ืช "http2_max_field_size" ื•-"http2_max_header_size" ื”ื•ืกืจื• ื•ื‘ืžืงื•ื ื–ืืช ื™ืฉ ืœื”ืฉืชืžืฉ ื‘-"large_client_header_buffers".
  • ื ื•ืกืคื” ืืคืฉืจื•ืช ื—ื“ืฉื” ืฉืœ ืฉื•ืจืช ื”ืคืงื•ื“ื” "-e", ื”ืžืืคืฉืจืช ืœืš ืœืฆื™ื™ืŸ ืงื•ื‘ืฅ ื—ืœื•ืคื™ ืœื›ืชื™ื‘ืช ื™ื•ืžืŸ ื”ืฉื’ื™ืื•ืช, ืืฉืจ ื™ืฉืžืฉ ื‘ืžืงื•ื ื”ื™ื•ืžืŸ ืฉืฆื•ื™ืŸ ื‘ื”ื’ื“ืจื•ืช. ื‘ืžืงื•ื ืฉื ื”ืงื•ื‘ืฅ, ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ืืช ื”ืขืจืš ื”ืžื™ื•ื—ื“ stderr.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”