Após 13 meses de desenvolvimento nova ramificação estável lançada Servidor HTTP de alto desempenho e servidor proxy multiprotocolo nginx 1.22.0, que incorpora as variações acumuladas na filial principal 1.21.x.
No futuro, todas as alterações na ramificação estável 1.22 serão relacionadas à depuração e vulnerabilidades graves. O ramo principal do nginx 1.23 será formado em breve, no qual o desenvolvimento de novos recursos continuará.
Para usuários comuns que não têm a tarefa de garantir a compatibilidade com módulos de terceiros, é recomendável usar a ramificação principal, com base em quais versões do produto comercial Nginx Plus são formadas a cada três meses.
Principais novidades no nginx 1.22.0
Nesta nova versão do nginx 1.22.0 que se apresenta, o Proteção aprimorada contra ataques de classe HTTP Request Smuggling em sistemas front-end-back-end que permitem acessar o conteúdo das solicitações de outros usuários processadas no mesmo thread entre o front-end e o back-end. Nginx agora sempre retorna um erro ao usar o método CONNECT; especificando simultaneamente os cabeçalhos "Content-Length" e "Transfer-Encoding"; quando houver espaços ou caracteres de controle na string de consulta, nome do cabeçalho HTTP ou valor do cabeçalho "Host".
Outra novidade que se destaca nesta nova versão é que adicionado suporte para variáveis para diretivas "proxy_ssl_certificate", "proxy_ssl_certificate_key", "grpc_ssl_certificate", "grpc_ssl_certificate_key", "uwsgi_ssl_certificate" e "uwsgi_ssl_certificate_key".
Além disso, nota-se também que foi adicionado suporte para o modo "pipelining" para enviar várias solicitações POP3 ou IMAP na mesma conexão ao módulo proxy de correio, bem como uma nova diretiva "max_errors" que especifica o número máximo de erros de protocolo após o qual a conexão será fechada.
Cabeçalhos "Auth-SSL-Protocol" e "Auth-SSL-Cipher" são passados para o servidor de autenticação de proxy de correio, mais o suporte para a extensão ALPN TLS foi adicionado ao módulo de transmissão. Para determinar a lista de protocolos ALPN suportados (h2, http/1.1), é proposta a diretiva ssl_alpn, e para obter informações sobre o protocolo ALPN acordado com o cliente, a variável $ssl_alpn_protocol.
Das outras mudanças que se destacam:
- Bloqueio de solicitações HTTP/1.0 que incluem o cabeçalho HTTP "Transfer-Encoding" (introduzido na versão do protocolo HTTP/1.1).
- A plataforma FreeBSD melhorou o suporte para a chamada do sistema sendfile, que é projetada para orquestrar uma transferência direta de dados entre um descritor de arquivo e um soquete. O modo sendfile(SF_NODISKIO) está permanentemente habilitado e foi adicionado suporte para o modo sendfile(SF_NOCACHE).
- O parâmetro "fastopen" foi adicionado ao módulo de transmissão, que habilita o modo "TCP Fast Open" para sockets de escuta.
- Corrigido o escape de caracteres """, "<", ">", "\", "^", "`", "{", "|" e "}" ao usar proxy com alteração de URI.
- A diretiva proxy_half_close foi adicionada ao módulo stream, com o qual pode ser configurado o comportamento quando uma conexão TCP proxy é fechada em um lado ("TCP half-close").
- Adicionada uma nova diretiva mp4_start_key_frame ao módulo ngx_http_mp4_module para transmitir um vídeo de um quadro-chave.
- Adicionada a variável $ssl_curve para retornar o tipo de curva elíptica selecionada para negociação de chaves em uma sessão TLS.
- A diretiva sendfile_max_chunk alterou o valor padrão para 2 megabytes;
- Suporte fornecido com a biblioteca OpenSSL 3.0. Adicionado suporte para chamar SSL_sendfile() ao usar OpenSSL 3.0.
- A montagem com a biblioteca PCRE2 é habilitada por padrão e fornece funções para processamento de expressões regulares.
- Ao carregar certificados de servidor, foi ajustado o uso de níveis de segurança suportados desde OpenSSL 1.1.0 e configurados através do parâmetro "@SECLEVEL=N" na diretiva ssl_ciphers.
- Removido o suporte ao conjunto de cifras de exportação.
- Na API de filtragem do corpo da solicitação, é permitido o armazenamento em buffer dos dados processados.
- Removido o suporte para estabelecer conexões HTTP/2 usando a extensão Next Protocol Negotiation (NPN) em vez de ALPN.
Finalmente se você estiver interessado em saber mais sobre isso, você pode verificar os detalhes no link a seguir.