Nginx 1.26.0 chega com suporte para HTTP/3, proteção contra ataques DoS e muito mais

nginx

Nginx é um servidor web/proxy reverso e proxy leve de alto desempenho

Foi anunciado recentemente lançamento da nova versão do Nginx 1.26.0, que é classificada como uma versão estável e implementa todas as alterações e melhorias que foram feitas durante o desenvolvimento da versão 1.25.

Para quem não conhece o Nginx, você deve saber que é um servidor web/proxy reverso leve desempenho e um proxy para protocolos de e-mail (IMAP/POP3) que usa uma arquitetura assíncrona baseada em eventos para lidar com muitas solicitações simultâneas. Ele foi projetado para lidar com conteúdo estático e dinâmico e pode ser usado para atender a páginas da Web, streaming de mídia e solicitações de API.

Principais novidades no nginx 1.26

Nesta nova versão do Nginx 1.26.0, uma das melhorias mais notáveis ​​durante o desenvolvimento do ramo principal 1.25.x do nginx é o suporte experimental para HTTP/3 usando o módulo ngx_http_v3 que usa QUIC como transporte para HTTP/2. QUIC é uma extensão do protocolo UDP que oferece múltiplas conexões e métodos de criptografia equivalentes a TLS/SSL.

Outra mudança que se destaca é a introdução de um diretiva "http2" separada para habilitar seletivamente o protocolo HTTP/2 em servidores individuais, suporte push de servidor removido para HTTP/2 para otimizar a funcionalidade do protocolo.

Além disso, no Nginx 1.26.0 Medidas de proteção implementadas contra atividades anormais de clientes HTTP/2 e ataques DoS do tipo «Reinicialização rápida«, limitando o número de solicitações por conexão e restringindo a criação de novos threads.

Note-se também que foi adicionado suporte para servidores virtuais para módulo de streaming, permitindo que servidores virtuais sejam configurados em blocos “servidor {…}”, bem como introduzindo o módulo ngx_stream_pass_module para encaminhar conexões diretamente para qualquer conector de escuta associado a módulos como http, stream e mail. Isso melhora a capacidade de passar conexões de fluxo diretamente para soquetes de escuta e aumenta a eficiência do tratamento de conexões, reduzindo a sobrecarga e a latência associadas ao roteamento adicional de conexões.

Do outras mudanças que se destacam desta nova versão:

  • A diretiva de ouvinte do módulo stream agora suporta parâmetros adicionais como "deferred", "accept_filter" e "setfib".
  • Implementado suporte para determinar o tamanho do bloco usado para transferir dados entre o cache da CPU e a memória em algumas arquiteturas.
  • O gerenciamento de buffers utilizados na detecção automática de conexões HTTP/2 foi significativamente melhorado
  • Foi alcançado desempenho aprimorado ao iniciar configurações com um grande número de políticas de localização.
  • Foi implementado suporte para detecção de linha de cache ou tamanho de bloco. Está disponível para algumas arquiteturas e é necessário principalmente para transferir informações entre a memória e o cache da CPU.
  • A diretiva “ssl”, que anteriormente era rotulada como “obsoleta”, foi descontinuada
  • Suporte para Homebrew no Apple Silicon.
  • Correções de bugs e melhorias de compilação cruzada do Windows.
  • Corrija o fechamento inesperado da conexão ao usar 0-RTT no QUIC.

Por fim, se estiver interessado em saber mais sobre o assunto, pode consultar os detalhes no link a seguir

Obtenha o nginx 1.26

Os interessados ​​em poder obter a nova versão devem fazer o seguinte, dependendo do caso de sua distribuição.

Para RHEL e derivados, você deve adicionar o repositório com o seguinte comando:

sudo nano /etc/yum.repos.d/nginx.repo

E adicione isso no final

[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/rhel/$releasever/$basearch/
gpgcheck=0
enabled=1

E instalamos com:

dnf install nginx

Enquanto para o Ubuntu e derivados dele, eles devem digitar o seguinte:

sudo nano etc/apt/sources.list.d/nginx.list

E adicione isso ao arquivo:

deb https://nginx.org/packages/ubuntu/ $(lsb_release -sc) nginx
deb-src https://nginx.org/packages/ubuntu/ $(lsb_release -sc) nginx

E continuamos com a instalação com:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key
sudo apt update
sudo apt install nginx

Agora, para o caso de Amazon Linux 2023, eles devem digitar:

sudo yum install yum-utils

Adicionamos o seguinte em /etc/yum.repos.d/nginx.repo com o seguinte conteúdo:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/amzn/2023/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
priority=9

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/amzn/2023/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
priority=9

E continuamos com a instalação com:

sudo yum instalar nginx

Por fim, para quem preferir a compilação do pacote, isso pode ser feito com os seguintes comandos (já baixado e estando dentro do diretório do código):

./configure
make
sudo make install