nginx 1.19.7 ನ ಮುಖ್ಯ ಶಾಖೆಯನ್ನು ಬಿಡುಗಡೆ ಮಾಡಲಾಗಿದೆ, ಅದರೊಳಗೆ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳ ಅಭಿವೃದ್ಧಿ ಮುಂದುವರಿಯುತ್ತದೆ (ಸಮಾನಾಂತರ ಬೆಂಬಲಿತ ಸ್ಥಿರ ಶಾಖೆ 1.18 ರಲ್ಲಿ, ಗಂಭೀರ ದೋಷಗಳು ಮತ್ತು ದುರ್ಬಲತೆಗಳ ನಿರ್ಮೂಲನೆಗೆ ಸಂಬಂಧಿಸಿದ ಬದಲಾವಣೆಗಳನ್ನು ಮಾತ್ರ ಮಾಡಲಾಗುತ್ತದೆ).
ಪ್ರಮುಖ ಬದಲಾವಣೆಗಳು:
- При исчерпании рабочим процессом свободных соединений, nginx теперь закрывает не только keepalive-соединения, но и соединения в состоянии ожидания закрытия сокета («lingering close»).
- Код обработки соединений в 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 ಬಿಡುಗಡೆಯಾಯಿತು, nginx ವೆಬ್ ಸರ್ವರ್ಗಾಗಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಇಂಟರ್ಪ್ರಿಟರ್. njs ಇಂಟರ್ಪ್ರಿಟರ್ ECMAScript ಮಾನದಂಡಗಳನ್ನು ಅಳವಡಿಸುತ್ತದೆ ಮತ್ತು ಕಾನ್ಫಿಗರೇಶನ್ನಲ್ಲಿ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ವಿನಂತಿಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು nginx ನ ಸಾಮರ್ಥ್ಯವನ್ನು ವಿಸ್ತರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ವಿನಂತಿಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು, ಸಂರಚನೆಯನ್ನು ರಚಿಸಲು, ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ರಚಿಸಲು, ವಿನಂತಿಯನ್ನು/ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಮಾರ್ಪಡಿಸಲು ಅಥವಾ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿನ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ತ್ವರಿತವಾಗಿ ಸ್ಟಬ್ಗಳನ್ನು ರಚಿಸಲು ಸುಧಾರಿತ ತರ್ಕವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ನಲ್ಲಿ ಬಳಸಬಹುದು.
В новой версии добавлена директива «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); } export default {filter};
Также добавлен метод ngx.fetch(), реализующий API Fetch, который предоставляет функциональность HTTP-клиента. Метод поддерживает обработку опций body, headers, buffer_size и max_response_body_size. В возвращаемом объекте Response поддерживаются методы arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type и url, а в объекте Header методы get(), getAll() и has(). function fetch(r) { ngx.fetch(‘http://nginx.org/’) .then(reply => reply.text()) .then(body => r.return(200, body)) .catch(e => r.return(501, e.message)); }
Также можно отметить публикацию сервера приложений NGINX Unit 1.22, предлагающего решение для обеспечения запуска web-приложений на различных языках программирования (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js и Java). Под управлением NGINX Unit может одновременно выполняться несколько приложений на разных языках программирования, параметры запуска которых можно изменять динамически без необходимости правки файлов конфигурации и перезапуска. Код написан на языке Си и распространяется под лицензией Apache 2.0.
В новом выпуске NGINX Unit основное внимание было уделено повышению стабильности, расширению средств для тестирования и исправлению ошибок. В формируемых для Linux пакетах изменены пользователь и группа, под которыми запускается NGINX Unit. Вместо nobody:nobody процессы теперь выполняются под отдельным пользователем unit в группе unit. Обеспечена совместимость с API Stream объектов ServerRequest и ServerResponse из модуля Node.js. В опции «path» для Python-приложений разрешено указание нескольких каталогов.
ಮೂಲ: opennet.ru