nginx 1.20.0 versiyasi

Bir yillik rivojlanishdan so'ng yuqori samarali HTTP serverining va nginx 1.20.0 ko'p protokolli proksi-serverning yangi barqaror tarmog'i joriy etildi, u 1.19.x asosiy filialida to'plangan o'zgarishlarni o'z ichiga oladi. Kelajakda 1.20 barqaror filialidagi barcha o'zgarishlar jiddiy xatolar va zaifliklarni bartaraf etish bilan bog'liq bo'ladi. Tez orada nginx 1.21 ning asosiy tarmog'i shakllanadi, unda yangi funksiyalarni ishlab chiqish davom etadi. Uchinchi tomon modullari bilan muvofiqlikni ta'minlash vazifasi bo'lmagan oddiy foydalanuvchilar uchun asosiy filialdan foydalanish tavsiya etiladi, uning asosida Nginx Plus tijorat mahsulotining relizlari har uch oyda shakllanadi.

Netcraftning mart oyidagi hisobotiga ko'ra, nginx barcha faol saytlarning 20.15 foizida (bir yil oldin 19.56 foiz, ikki yil avval 20.73 foiz) foydalaniladi, bu ushbu turkumdagi mashhurlik bo'yicha ikkinchi o'ringa to'g'ri keladi (Apache ulushi 25.38 foizga to'g'ri keladi). (bir yil oldin 27.64%), Google - 10.09%, Cloudflare - 8.51%. Shu bilan birga, barcha saytlarni ko'rib chiqsak, nginx o'z yetakchiligini saqlab qolgan va bozorning 35.34 foizini egallagan (bir yil oldin 36.91%, ikki yil oldin - 27.52%, Apache ulushi esa 25.98%, OpenResty (nginx va LuaJIT asosidagi platforma) - 6.55%, Microsoft IIS - 5.96%.

Dunyodagi millionlab eng ko'p tashrif buyurilgan saytlar orasida nginx ulushi 25.55% (bir yil oldin 25.54%, ikki yil oldin 26.22%). Hozirda 419 millionga yaqin veb-saytlar Nginx bilan ishlaydi (bir yil avval 459 million). W3Techs ma'lumotlariga ko'ra, nginx eng ko'p tashrif buyurilgan million saytlarning 33.7 foizida qo'llaniladi, o'tgan yilning aprel oyida bu ko'rsatkich 31.9 foizni, bir yil oldin - 41.8 foizni tashkil etgan (pasayish Cloudflare http-ning alohida hisobiga o'tish bilan izohlanadi) server). Yil davomida Apache ulushi 39.5 foizdan 34 foizga, Microsoft IIS ulushi esa 8.3 foizdan 7 foizga tushdi. LiteSpeed ​​ulushi 6.3 foizdan 8.4 foizga, Node.js 0.8 foizdan 1.2 foizgacha o‘sdi. Rossiyada nginx eng ko'p tashrif buyurilgan saytlarning 79.1 foizida qo'llaniladi (bir yil oldin - 78.9 foiz).

1.19.x yuqori oqim filialini ishlab chiqishda qo'shilgan eng muhim yaxshilanishlar:

  • OCSP (Online Certificate Status Protocol) protokoli asosida tashqi xizmatlardan foydalangan holda mijoz sertifikatlarini tekshirish imkoniyati qo‘shildi. Tekshirishni yoqish uchun kesh hajmini sozlash uchun ssl_ocsp direktivasi taklif etiladi - ssl_ocsp_cache, sertifikatda ko'rsatilgan OCSP ishlov beruvchisining URL manzilini qayta aniqlash uchun - ssl_ocsp_responder.
  • ngx_stream_set_module moduli kiritilgan bo'lib, u o'zgaruvchi serveriga qiymat belgilash imkonini beradi { tinglang 12345; $true 1 belgilang; }
  • Proksi-ulanishlarda Cookie-fayllar uchun bayroqlarni belgilash uchun proxy_cookie_flags direktivasi qo'shildi. Masalan, “bir” Cookie fayliga “httponly” bayrog‘ini va boshqa barcha Cookie fayllari uchun “nosecure” va “samesite=strict” bayroqlarini qo‘shish uchun siz quyidagi konstruksiyadan foydalanishingiz mumkin: proxy_cookie_flags faqat bitta http; proxy_cookie_flags ~ nosecure samesite=qat'iy;

    Cookie-larga bayroqlar qo'shish uchun xuddi shunday userid_flags direktivasi ngx_http_userid moduli uchun ham amalga oshirilgan.

  • “ssl_conf_command”, “proxy_ssl_conf_command”, “grpc_ssl_conf_command” va “uwsgi_ssl_conf_command” direktivalari qo‘shildi, ular yordamida OpenSSLni sozlash uchun ixtiyoriy parametrlarni o‘rnatishingiz mumkin. Masalan, ChaCha shifrlariga va TLSv1.3 shifrlarining kengaytirilgan konfiguratsiyasiga ustuvorlik berish uchun siz ssl_conf_command Options PrioritizeChaCha ni belgilashingiz mumkin; ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
  • SSL ulanishlarini muzokara qilish bo'yicha barcha urinishlarni rad etishni ko'rsatuvchi "ssl_reject_handshake" direktivasi qo'shildi (masalan, SNI maydonida noma'lum xost nomlari bilan barcha qo'ng'iroqlarni rad qilish uchun foydalanish mumkin). server { 443 ssl ni tinglang; ssl_reject_handshake yoqilgan; } server { 443 ssl ni tinglang; server_name example.com; ssl_certificate example.com.crt; ssl_certificate_key example.com.key; }
  • Proksi_smtp_auth direktivasi pochta proksi-serveriga qo'shildi, bu sizga AUTH buyrug'i va PLAIN SASL mexanizmi yordamida foydalanuvchini orqa tomonda autentifikatsiya qilish imkonini beradi.
  • "Keepalive_time" direktivasi qo'shildi, bu har bir ushlab turuvchi ulanishning umumiy ishlash muddatini cheklaydi, shundan so'ng ulanish yopiladi (keepalive_timeout bilan adashtirmaslik kerak, bu vaqtni saqlab qolish ulanishi yopilgandan keyin harakatsizlik vaqtini belgilaydi).
  • $connection_time o'zgaruvchisi qo'shildi, bu orqali ulanish davomiyligi haqida ma'lumotni soniyalarda millisekundlik aniqlik bilan olishingiz mumkin.
  • “Proxy_cache_path”, “fastcgi_cache_path”, “scgi_cache_path” va “uwsgi_cache_path” direktivalariga “min_free” parametri qo‘shildi, bu esa bo‘sh disk maydonining minimal hajmini aniqlash asosida kesh hajmini tartibga soladi.
  • "Lingering_close", "lingering_time" va "lingering_timeout" direktivalari HTTP/2 bilan ishlashga moslashtirilgan.
  • HTTP/2 da ulanishni qayta ishlash kodi HTTP/1.x ilovasiga yaqin. "http2_recv_timeout", "http2_idle_timeout" va "http2_max_requests" individual sozlamalarini qo'llab-quvvatlash "keepalive_timeout" va "keepalive_requests" umumiy ko'rsatmalari foydasiga to'xtatildi. "http2_max_field_size" va "http2_max_header_size" sozlamalari olib tashlandi va ularning o'rniga "large_client_header_buffers" dan foydalanish kerak.
  • Sozlamalarda ko'rsatilgan jurnal o'rniga ishlatiladigan xato jurnalini yozish uchun muqobil faylni belgilash imkonini beruvchi yangi "-e" buyruq qatori opsiyasi qo'shildi. Fayl nomi o'rniga stderr maxsus qiymatini belgilashingiz mumkin.

Manba: opennet.ru

a Izoh qo'shish