Після 13 місяців розвитку випущена нова стабільна гілка Високопродуктивний HTTP-сервер і багатопротокольний проксі-сервер nginx 1.22.0, який включає зміни, накопичені в головній гілці 1.21.x.
У майбутньому всі зміни в стабільній гілці 1.22 будуть пов'язані з налагодженням і серйозні вразливості. Незабаром буде сформована основна гілка nginx 1.23, в якій продовжиться розробка нових можливостей.
Для рядових користувачів, у яких не стоїть завдання забезпечити сумісність із сторонніми модулями, рекомендується використовувати основну гілку, на основі якої кожні три місяці формуються версії комерційного продукту Nginx Plus.
Основні новини nginx 1.22.0
У цій новій версії nginx 1.22.0, яка представлена, Покращений захист від атак класу HTTP Request Smuggling у зовнішніх серверних системах, які дозволяють отримати доступ до вмісту запитів інших користувачів, оброблених в одному потокі між інтерфейсом і бекендом. Тепер Nginx завжди повертає помилку при використанні методу CONNECT; шляхом одночасного визначення заголовків «Content-Length» і «Transfer-Encoding»; коли в рядку запиту, імені заголовка HTTP або значенні заголовка "Host" є пробіли або контрольні символи.
Ще однією новинкою, яка виділяється в цій новій версії, є те додана підтримка змінних до директив "proxy_ssl_certificate", "proxy_ssl_certificate_key", "grpc_ssl_certificate", "grpc_ssl_certificate_key", "uwsgi_ssl_certificate" та "uwsgi_ssl_certificate_key".
Крім того, також зазначається, що його додали підтримка режиму "конвеєрного". щоб надіслати декілька запитів POP3 або IMAP на одному з’єднанні до модуля поштового проксі, а також нову директиву «max_errors», яка визначає максимальну кількість помилок протоколу, після яких з’єднання буде закрито.
Заголовки "Auth-SSL-Protocol" і "Auth-SSL-Cipher" передаються на поштовий проксі-сервер аутентифікації, плюс підтримка розширення ALPN TLS була додана в модуль передачі. Для визначення списку підтримуваних протоколів ALPN (h2, http/1.1) пропонується директива ssl_alpn, а для отримання інформації про узгоджений з клієнтом протокол ALPN — змінна $ssl_alpn_protocol.
З інших змін що виділяються:
- Блокування запитів HTTP/1.0, які містять HTTP-заголовок "Transfer-Encoding" (введений у версії протоколу HTTP/1.1).
- Платформа FreeBSD покращила підтримку системного виклику sendfile, який призначений для організації безпосередньої передачі даних між дескриптором файлу і сокетом. Режим sendfile(SF_NODISKIO) увімкнено постійно, і додано підтримку режиму sendfile(SF_NOCACHE).
- Параметр «fastopen» додано до модуля передачі, який включає режим «TCP Fast Open» для прослуховуваних сокетів.
- Виправлено екранування символів """, "<", ">", "\", "^", "`", "{", "|" і "}" при використанні проксі зі зміною URI.
- До модуля потоку додано директиву proxy_half_close, за допомогою якої можна налаштувати поведінку, коли TCP-з'єднання проксі закрите з одного боку ("TCP напівзакрите").
- Додано нову директиву mp4_start_key_frame до модуля ngx_http_mp4_module для потокової передачі відео з ключового кадру.
- Додано змінну $ssl_curve для повернення типу еліптичної кривої, вибраної для узгодження ключа в сеансі TLS.
- Директива sendfile_max_chunk змінила значення за замовчуванням на 2 мегабайти;
- Підтримка надається бібліотекою OpenSSL 3.0. Додано підтримку виклику SSL_sendfile() при використанні OpenSSL 3.0.
- Збірка з бібліотекою PCRE2 включена за замовчуванням і надає функції для обробки регулярних виразів.
- Під час завантаження сертифікатів сервера налагоджено використання рівнів безпеки, які підтримуються з OpenSSL 1.1.0 і встановлюються за допомогою параметра «@SECLEVEL=N» у директиві ssl_ciphers.
- Вилучено підтримку набору шифрів експорту.
- В API фільтрації тіла запиту дозволена буферизація оброблених даних.
- Вилучено підтримку встановлення з’єднань HTTP/2 за допомогою розширення Next Protocol Negotiation (NPN) замість ALPN.
В кінці кінців якщо вам цікаво дізнатись більше про це, Ви можете перевірити деталі У наступному посиланні.