Após um ano de desenvolvimento é apresentado novo ramo estável de servidor HTTP de alto desempenho e servidor proxy multiprotocolo nginx 1.16.0, que absorveu as alterações acumuladas no branch principal 1.15.x. No futuro, todas as mudanças no branch estável 1.16 estarão relacionadas à eliminação de erros e vulnerabilidades graves. Em breve será formado o ramo principal do nginx 1.17, 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.
As melhorias mais notáveis adicionadas durante o desenvolvimento da ramificação upstream 1.15.x:
Adicionada a capacidade de usar variáveis em 'diretivasssl_certificate' E 'ssl_certificate_key', que pode ser usado para carregar certificados dinamicamente;
Adicionada a capacidade de carregar certificados SSL e chaves secretas de variáveis sem usar arquivos intermediários;
No bloco "rio acima» nova diretiva implementada «acaso“, com o qual você pode organizar o balanceamento de carga com uma seleção aleatória de um servidor para encaminhamento da conexão;
No módulo ngx_stream_ssl_preread variável implementada $ssl_preread_protocol,
que especifica a versão mais recente do protocolo SSL/TLS compatível com o cliente. A variável permite criar configurações para acesso usando vários protocolos com e sem SSL através de uma porta de rede ao fazer proxy de tráfego usando os módulos http e stream. Por exemplo, para organizar o acesso via SSH e HTTPS através de uma porta, a porta 443 pode ser encaminhada para SSH por padrão, mas se a versão SSL for definida, encaminhe para HTTPS.
Uma nova variável foi adicionada ao módulo upstream "$upstream_bytes_sent", que exibe o número de bytes transferidos para o servidor do grupo;
Para módulo transmitir canais dentro de uma sessão, foi adicionada a capacidade de processar vários datagramas UDP recebidos do cliente;
A diretiva "solicitações_proxy", especifica o número de datagramas recebidos do cliente, ao atingir o qual a ligação entre o cliente e a sessão UDP existente é removida. Após receber o número especificado de datagramas, o próximo datagrama recebido do mesmo cliente inicia uma nova sessão;
A diretiva listen agora tem a capacidade de especificar intervalos de portas;
Adicionada diretiva "ssl_early_data» para ativar o modo 0-RTT ao utilizar TLSv1.3, que permite salvar parâmetros de conexão TLS previamente negociados e reduzir o número de RTTs para 2 ao retomar uma conexão previamente estabelecida;
Novas diretivas foram adicionadas para configurar o keepalive para conexões de saída (habilitando ou desabilitando a opção SO_KEEPALIVE para soquetes):
«proxy_socket_keepalive" - configura o comportamento "TCP keepalive" para conexões de saída para o servidor proxy;
«fastcgi_socket_keepalive" - configura o comportamento "TCP keepalive" para conexões de saída com o servidor FastCGI;
«grpc_socket_keepalive" - configura o comportamento "TCP keepalive" para conexões de saída com o servidor gRPC;
«memcached_socket_keepalive" - configura o comportamento "TCP keepalive" para conexões de saída para o servidor memcached;
«scgi_socket_keepalive" - configura o comportamento "TCP keepalive" para conexões de saída com o servidor SCGI;
«uwsgi_socket_keepalive" - configura o comportamento "TCP keepalive" para conexões de saída com o servidor uwsgi.
Na diretiva "limite_req" adicionado um novo parâmetro “atraso”, que define um limite após o qual as solicitações redundantes são atrasadas;
Novas diretivas “keepalive_timeout” e “keepalive_requests” foram adicionadas ao bloco “upstream” para definir limites para Keepalive;
A diretiva "ssl" foi obsoleta, substituída pelo parâmetro "ssl" na diretiva "listen". Certificados SSL ausentes agora são detectados na fase de teste de configuração ao usar a diretiva “listen” com o parâmetro “ssl” nas configurações;
Ao usar a diretiva reset_timedout_connection, as conexões agora são fechadas com um código 444 quando o tempo limite expira;
Erros SSL "solicitação http", "solicitação de proxy https", "protocolo não suportado" e "versão muito baixa" agora são exibidos no log com o nível "info" em vez de "crit";
Adicionado suporte para o método poll em sistemas Windows ao usar o Windows Vista e posterior;
Possibilidade de usar TLSv1.3 ao construir com a biblioteca BoringSSL, não apenas OpenSSL.