Lançamento do nginx 1.19.7, njs 0.5.1 e unidade NGINX 1.22.0

Foi lançado o branch principal do nginx 1.19.7, dentro do qual continua o desenvolvimento de novos recursos (no branch estável 1.18 com suporte paralelo, apenas são feitas alterações relacionadas à eliminação de erros graves e vulnerabilidades).

Grandes mudanças:

  • Quando um processo de trabalho fica sem conexões livres, o nginx agora fecha não apenas as conexões keepalive, mas também as conexões que aguardam o fechamento do soquete (“fechamento prolongado”).
  • O código de processamento de conexão em HTTP/2 é próximo da implementação HTTP/1.x. O suporte para as configurações individuais "http2_recv_timeout", "http2_idle_timeout" e "http2_max_requests" foi descontinuado em favor das diretivas gerais "keepalive_timeout" e "keepalive_requests".
  • As configurações "http2_max_field_size" e "http2_max_header_size" foram removidas e "large_client_header_buffers" deve ser usado em seu lugar.

Ao mesmo tempo, foi lançado o njs 0.5.1, um interpretador JavaScript para o servidor web nginx. O interpretador njs implementa padrões ECMAScript e permite expandir a capacidade do nginx de processar solicitações usando scripts na configuração. Os scripts podem ser usados ​​em um arquivo de configuração para definir lógica avançada para processar solicitações, gerar uma configuração, gerar dinamicamente uma resposta, modificar uma solicitação/resposta ou criar stubs rapidamente para resolver problemas em aplicações web.

A nova versão adiciona a diretiva “js_header_filter”, que permite definir uma função JavaScript para filtrar e alterar cabeçalhos de resposta arbitrários: js_import foo.js; localização / { js_header_filter foo.filter; proxy_pass http://127.0.0.1:8081/; } foo.js: function filter(r) { var cookies = r.headersOut['Set-Cookie']; var len = r.args.len? Número(r.args.len): 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } exportar padrão {filtro};

Também foi adicionado o método ngx.fetch(), que implementa a API Fetch, que fornece funcionalidade de cliente HTTP. O método suporta o processamento de opções de corpo, cabeçalhos, buffer_size e max_response_body_size. O objeto Response retornado suporta métodos arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type e url, e o objeto Header suporta get(), getAll() e has() métodos . function fetch(r) { ngx.fetch('http://nginx.org/') .then(reply => respond.text()) .then(body => r.return(200, body)) .catch (e => r.return(501, e.mensagem)); }

De referir ainda a publicação do servidor de aplicações NGINX Unit 1.22, que oferece uma solução para execução de aplicações web em diversas linguagens de programação (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js e Java). A unidade NGINX pode executar simultaneamente vários aplicativos em diferentes linguagens de programação, cujos parâmetros de inicialização podem ser alterados dinamicamente sem a necessidade de editar arquivos de configuração e reiniciar. O código é escrito em C e distribuído sob a licença Apache 2.0.

A nova versão da unidade NGINX focou em melhorar a estabilidade, expandir as ferramentas de teste e corrigir bugs. Nos pacotes gerados para Linux, o usuário e o grupo sob o qual a Unidade NGINX é executada foram alterados. Em vez de ninguém: ninguém, os processos agora são executados na unidade de usuário individual no grupo de unidades. Compatibilidade garantida com a API Stream dos objetos ServerRequest e ServerResponse do módulo Node.js. A opção "path" para aplicativos Python permite que vários diretórios sejam especificados.

Fonte: opennet.ru

Adicionar um comentário