nginx 1.20.0 منتشر شد

پس از یک سال توسعه، یک شاخه پایدار جدید از سرور HTTP با کارایی بالا و سرور پروکسی چند پروتکلی nginx 1.20.0 معرفی شده است که تغییرات انباشته شده در شاخه اصلی 1.19.x را در خود جای داده است. در آینده، تمامی تغییرات در شاخه پایدار 1.20 مربوط به رفع خطاها و آسیب پذیری های جدی خواهد بود. به زودی شعبه اصلی nginx 1.21 تشکیل می شود که توسعه ویژگی های جدید در آن ادامه خواهد داشت. برای کاربران عادی که وظیفه اطمینان از سازگاری با ماژول های شخص ثالث را ندارند، توصیه می شود از شعبه اصلی استفاده کنند که بر اساس آن هر سه ماه یکبار انتشار محصول تجاری Nginx Plus تشکیل می شود.

بر اساس گزارش ماه مارس از نت کرافت، nginx در 20.15٪ از کل سایت های فعال (یک سال قبل 19.56٪، دو سال قبل 20.73٪) استفاده می شود که با رتبه دوم محبوبیت در این دسته (سهم آپاچی برابر با 25.38٪ است). (یک سال پیش 27.64%)، Google - 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 (پروتکل وضعیت گواهی آنلاین) اضافه شده است. برای فعال کردن بررسی، دستورالعمل ssl_ocsp پیشنهاد شده است، برای پیکربندی اندازه حافظه پنهان - ssl_ocsp_cache، برای تعریف مجدد URL کنترل کننده OCSP مشخص شده در گواهی - ssl_ocsp_responder.
  • ماژول ngx_stream_set_module گنجانده شده است که به شما امکان می دهد مقداری را به سرور متغیر اختصاص دهید { listen 12345; تنظیم $true 1; }
  • دستورالعمل proxy_cookie_flags برای مشخص کردن پرچم‌ها برای کوکی‌ها در اتصالات پراکسی اضافه شد. به عنوان مثال، برای افزودن پرچم «httponly» به کوکی «one» و پرچم‌های «nosecure» و «samesite=strict» برای همه کوکی‌های دیگر، می‌توانید از ساختار زیر استفاده کنید: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure samesite=strict;

    یک دستورالعمل userid_flags مشابه برای افزودن پرچم به کوکی ها نیز برای ماژول 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 استفاده کرد). 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; }
  • دستورالعمل proxy_smtp_auth به پروکسی نامه اضافه شده است، که به شما امکان می دهد با استفاده از دستور 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" اضافه شده است که اندازه کش را بر اساس تعیین حداقل اندازه فضای آزاد دیسک تنظیم می کند.
  • دستورالعمل های "lingering_close"، "lingering_time" و "lingering_timeout" برای کار با 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

اضافه کردن نظر