Foi lançada a versão principal do nginx 1.27.5, onde continuam os desenvolvimentos de novas funcionalidades. Na ramificação estável 1.26.x, apenas mudanças relacionadas à correção de erros graves e vulnerabilidades são realizadas. No futuro, uma ramificação estável 1.28 será formada com base na ramificação principal 1.27.x. O código do projeto é escrito na linguagem C e é distribuído sob a licença BSD.
Entre as mudanças no nginx 1.27.5:
- Para conexões que utilizam o protocolo QUIC, foi adicionada a suporte ao algoritmo de controle de sobrecarga de rede CUBIC (RFC 9438), que trabalha aumentando gradualmente o tamanho da janela de sobrecarga até que a perda de pacotes ocorra, após o que o tamanho da janela é revertido ao valor anterior à perda. Nos testes realizados, o uso do CUBIC permitiu reduzir o tempo de transferência de um arquivo de 500MB em 24% com latências de 40ms e BDP de 750K (Bandwidth Delay Product) e em 73% com latências de 100ms e BDP de 9M.
- O tamanho máximo dos caches de sessões SSL em memória compartilhada foi aumentado para 8192.
- Foi estabelecida a compilação com a biblioteca C Musl.
- Trabalhou-se na otimização de desempenho e na correção de bugs na implementação do HTTP/3.
- Foram corrigidos erros na implementação das diretivas "grpc_ssl_password_file", "proxy_ssl_password_file" e "uwsgi_ssl_password_file", que se manifestavam durante o carregamento de certificados SSL e chaves de criptografia a partir de variáveis.
- Foram resolvidos problemas relacionados à configuração das variáveis $ssl_curve e $ssl_curves ao usar implementações plugáveis de curvas elípticas no OpenSSL.
Adicionalmente, destaca-se a publicação das versões estáveis do projeto FreeNginx 1.27.5 e 1.27.6, um fork do Nginx. O desenvolvimento do fork é liderado por Maxim Dunin, um dos principais desenvolvedores do Nginx. O FreeNginx é posicionado como um projeto sem fins lucrativos, que assegura o desenvolvimento da base de código do Nginx sem intervenção corporativa.
Mudanças no FreeNginx 1.27.5 e 1.27.6:
- Os problemas com o uso do OpenSSL 3.5 foram resolvidos (o nome do grupo X25519MLKEM768 não aparecia nas variáveis $ssl_curve e $ssl_curves).
- Foi corrigido o encerramento abrupto do processo de trabalho em configurações com a diretiva proxy_ssl_password_file, que se manifestava ao especificar variáveis nas diretivas proxy_ssl_certificate e proxy_ssl_certificate_key.
- A diretiva listen agora suporta o parâmetro multipath.
- É proibido reutilizar sessões SSL entre servidores que utilizam diferentes certificados na diretiva ssl_trusted_certificate, quando a verificação de certificados SSL do cliente está habilitada.
- Foi resolvido o problema de reutilização de sessões no contexto de outro servidor virtual ao usar TLSv1.3 com OpenSSL 1.1.1e+.
- Foi resolvido o problema ao usar zlib-ng.
Além disso, foi lançado o njs 0.8.10, um módulo para integração de interpretadores da linguagem JavaScript ao servidor http nginx. Suporte para conexão de diversos motores JavaScript é oferecido. Como base, é proposto o motor QuickJS, que suporta a especificação ECMAScript 2023. O njs permite o uso de scripts JavaScript na configuração para ampliar as capacidades do nginx. Os scripts podem ser usados para definir lógica de processamento de solicitações mais complexa, formação de configuração, geração dinâmica de resposta, modificação de solicitações/respostas ou criação rápida de gambiarras para resolver problemas em aplicações web.
Mudanças no njs 0.8.10:
- Foi adicionada ao motor JavaScript QuickJS o suporte à API WebCrypto, TextEncoder e TextDecoder.
- Novos módulos querystring, crypto e xml foram adicionados ao motor QuickJS.
- Suporte à biblioteca QuickJS-NG foi adicionado.
- No módulo do nginx, foi implementada a leitura do conteúdo de r.requestText e r.requestBuffer de um arquivo temporário.
Fonte: opennet.ru
