versão nginx 1.18.0

Após um ano de desenvolvimento é apresentado novo ramo estável de servidor HTTP de alto desempenho e servidor proxy multiprotocolo nginx 1.18.0, que absorveu as alterações acumuladas no branch principal 1.17.x. No futuro, todas as mudanças no branch estável 1.18 estarão relacionadas à eliminação de erros e vulnerabilidades graves. Em breve será formado o ramo principal do nginx 1.19, dentro do 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, recomendado utilizar o ramo principal, com base no qual são formados os lançamentos do produto comercial Nginx Plus a cada três meses.

Conforme Relatório de abril Netcraft nginx é usado em 19.56% de todos os sites ativos (há um ano 20.73%, dois anos atrás 21.02%), o que corresponde ao segundo lugar em popularidade nesta categoria (a participação do Apache corresponde a 27.64%, Google - 10.03%, Microsoft IIS – 4.77%) . Ao mesmo tempo, ao considerar todos os sites, o nginx mantém a liderança e ocupa 36.91% do mercado (há um ano 27.52%), enquanto a participação do Apache corresponde a 24.73%, Microsoft IIS - 12.85%, Google - 3.42%.

Entre os milhões de sites mais visitados do mundo, a participação do nginx é de 25.54% (há um ano 26.22%, há dois anos 23.76%). Atualmente, cerca de 459 milhões de sites rodam Nginx (397 milhões há um ano). Por Conforme O nginx da W3Techs é usado em 31.9% dos sites dos milhões mais visitados, em abril do ano passado esse número era de 41.8%, no ano anterior - 38% (o declínio é explicado pela transição para a contabilidade separada do servidor HTTP Cloudflare). A participação do Apache caiu ao longo do ano de 43.6% para 38.9%, e a participação do Microsoft IIS de 8.6% para 8.3%. Na Rússia nginx usado em 78.9% dos sites mais visitados (há um ano - 81%).

As melhorias mais notáveis ​​adicionadas durante o desenvolvimento da ramificação upstream 1.17.x:

  • Diretiva adicionada limit_req_dry_run, que ativa o modo de teste, no qual não são aplicadas restrições à intensidade de processamento das solicitações (sem limite de taxa), mas continua levando em consideração o número de solicitações que excedem os limites na memória compartilhada;
  • Diretiva adicionada limite_conn_dry_run, que alterna o módulo ngx_http_limit_conn_module para o modo de execução de teste, no qual o número de conexões não é limitado, mas é levado em consideração;
  • Adicionada diretiva "auth_delay", que permite adicionar um atraso a solicitações não autorizadas com um código de resposta 401 para reduzir a intensidade da adivinhação de senha e proteger contra ataques, manipulando a medição do tempo de execução das operações (timing attack) ao acessar sistemas aos quais o acesso é limitado senha, resultado de uma subconsulta ou JWT (Token Web JSON);
  • Adicionado suporte para variáveis ​​nas diretivas "limit_rate" e "limit_rate_after", bem como nas diretivas "proxy_upload_rate" e "proxy_download_rate" do módulo stream;
  • Na diretiva grpc_pass adicionado suporte para usar uma variável em um parâmetro que define um endereço. Se o endereço for especificado como um nome de domínio, o nome é pesquisado entre os grupos de servidores descritos e, se não for encontrado, é determinado por meio de um resolvedor;
  • Novas variáveis ​​adicionadas $proxy_protocol_server_addr и $proxy_protocol_server_port, que contém o endereço do servidor e a porta obtidos do cabeçalho do protocolo PROXY;
  • No módulo ngx_stream_limit_conn_module variável adicionada $limit_conn_status, que armazena o resultado da limitação do número de conexões: PASSED, REJECTED ou REJECTED_DRY_RUN;
  • No módulo ngx_http_limit_req_module variável adicionada $limit_req_status, que armazena o resultado da limitação da taxa de chegada das solicitações: PASSED, DELAYED, REJECTED, DELAYED_DRY_RUN ou REJECTED_DRY_RUN;
  • Por padrão, o módulo é montado ngx_http_postpone_filter_module;
  • Adicionado suporte para alternar blocos nomeados de "localização" usando o método $r->internal_redirect() fornecido pelo interpretador Perl integrado. Este método agora envolve o processamento de URIs com caracteres de escape;
  • Ao usar a diretiva “upstream” no bloco de configurações “upstream”hash» para organizar o balanceamento de carga com ligação cliente-servidor, se você especificar um valor de chave vazio, o modo de balanceamento uniforme (round-robin) será ativado agora;
  • Adicionado suporte para chamar ioctl(FIONREAD) se disponível para evitar a leitura de uma conexão rápida ao longo do tempo.

Fonte: opennet.ru

Adicionar um comentário