nginx 1.19.7, njs 0.5.1 жана NGINX Unit 1.22.0 чыгаруу

Nginx 1.19.7 негизги бутагы чыгарылды, анын алкагында жаңы функцияларды иштеп чыгуу уланууда (параллель колдоого алынган 1.18 туруктуу бутагында олуттуу каталарды жана алсыздыктарды жоюуга байланыштуу гана өзгөртүүлөр киргизилет).

Негизги өзгөрүүлөр:

  • Жумушчу процессинин бош туташуулары түгөнүп калганда, nginx азыр туруктуу байланыштарды гана эмес, ошондой эле розетка жабылышын күткөн байланыштарды да жаап коёт («узак жабылуу»).
  • 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" колдонулушу керек.

Ошол эле учурда, njs 0.5.1, JavaScript үчүн интерпретатор веб сервер nginx. njs интерпретатору ECMAScript стандарттарын ишке ашырат жана конфигурация скрипттерин колдонуп, nginxтин суроо-талаптарды иштетүү мүмкүнчүлүктөрүн кеңейтүүгө мүмкүндүк берет. Скрипттерди конфигурация файлында суроо-талаптарды иштетүүнүн өркүндөтүлгөн логикасын аныктоо, конфигурацияларды түзүү, жоопторду динамикалык түрдө түзүү, суроо-талаптарды/жоопторду өзгөртүү же веб-тиркемелердеги көйгөйлөрдү чечүү үчүн тез арада stub түзүү үчүн колдонсо болот.

Жаңы версия “js_header_filter” директивасын кошот, ал сизге ыктыярдуу жооп аталыштарын чыпкалоо жана өзгөртүү үчүн JavaScript функциясын коюуга мүмкүндүк берет: js_import foo.js; location / {js_header_filter foo.filter; proxy_pass http://127.0.0.1:8081/; } foo.js: function filter(r) { var cookies = r.headersOut['Set-Cookie']; var len = r.args.len ? Number(r.args.len) : 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } экспорт демейки {фильтр};

Ошондой эле HTTP кардар функционалдуулугун камсыз кылган Fetch API ишке ашырган ngx.fetch() ыкмасы кошулду. Метод дененин, аталыштардын, buffer_size жана max_response_body_size параметрлерин иштетүүнү колдойт. Кайтарылган Response объекти arrayBuffer(), bodyUsed, json(), баштар, ok, redirect, status, statusText, text(), type жана url ыкмаларын, ал эми Header объекти get(), getAll() жана has() колдойт. ыкмалары. функция fetch(r) { ngx.fetch('http://nginx.org/') .андан кийин(жооп => reply.text()) .андан кийин(дене => r.return(200, дене)) .catch (e => r.return(501, e.message)); }

Ошондой эле, басылманы белгилей аласыз сервер NGINX Unit 1.22, ар кандай программалоо тилдеринде (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js жана Java) жазылган веб-тиркемелерди иштетүү үчүн чечим. NGINX Unit бир эле учурда ар кандай тилдерде жазылган бир нече тиркемелерди иштете алат жана алардын ишке киргизүү параметрлерин конфигурация файлдарын түзөтпөстөн же кайра жүктөбөстөн динамикалык түрдө өзгөртүүгө болот. Код C тилинде жазылган жана Apache 2.0 лицензиясы боюнча лицензияланган.

NGINX Unitтин жаңы чыгарылышы туруктуулукту жакшыртууга, тестирлөө мүмкүнчүлүктөрүн кеңейтүүгө жана каталарды оңдоого багытталган. Linux NGINX Unit пакеттерде иштеген колдонуучу жана топ өзгөртүлдү. nobody:nobody ордуна, процесстер эми unit тобунда unit деп аталган өзүнчө колдонуучунун астында иштейт. Node.js модулундагы ServerRequest жана ServerResponse объекттери үчүн Stream API менен шайкештик камсыздалды. Эми Python тиркемелери үчүн "жол" опциясында бир нече каталогдорду көрсөтүүгө болот.

Source: opennet.ru

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster