Anunciando o NGINX Plus R7

NGINX | 16 de setembro de 2015

A NGINX, Inc. tem o orgulho de anunciar a disponibilidade do NGINX Plus Release 7 (R7), a versão mais recente de nossa plataforma de entrega de aplicações. A atualização oferece uma implementação com suporte completo do novo padrão web HTTP/2, a primeira desse tipo para um servidor web líder de mercado. O NGINX Plus pode ser implantado como gateway HTTP/2 de frontend e acelerador para serviços web novos e existentes.

[Editor – Esta publicação foi atualizada para fazer referência à API do NGINX Plus, que substitui e torna obsoleto o módulo de status separado mencionado na versão original da publicação.]

A atualização mais recente também traz melhorias expressivas e recursos adicionais para garantir que as organizações possam disponibilizar suas aplicações com o desempenho, a segurança e a confiabilidade exigidos por aplicações empresariais. Isso inclui aprimoramentos significativos que facilitam o monitoramento, o gerenciamento e a depuração de aplicações, além de recursos adicionais de segurança e otimização de desempenho.

Editor – Para mais detalhes sobre os principais novos recursos do NGINX Plus R7, consulte estas publicações relacionadas no blog:

Confira também nosso webinar sob demanda, Quais são as novidades do NGINX Plus R7?

Os principais recursos desta versão incluem:

  • Implementação de HTTP/2 com suporte completo – O NGINX Plus agora oferece uma implementação com suporte completo do novo padrão web HTTP/2. O NGINX Plus pode ser implantado como gateway HTTP/2 de frontend e acelerador para serviços web novos e existentes.

    O suporte a HTTP/2 está disponível apenas no pacote opcional nginx-plus-http2. Os pacotes nginx-plus e nginx-plus-extras oferecem suporte a SPDY e são atualmente recomendados para sites em produção devido à maior compatibilidade com navegadores e à maturidade do código.Observação: Com base nos testes realizados por usuários do patch em estágio alfa e com o apoio inicial das empresas copatrocinadoras Automattic e Dropbox, a versão final de código aberto do HTTP/2 será disponibilizada após o lançamento da R7.
  • Desempenho significativamente melhor – O NGINX Plus R7 oferece suporte a pools de threads para E/S assíncrona. Isso acelera cargas de trabalho que envolvem altos níveis de E/S de disco, como o armazenamento de conteúdo em cache. Nossos benchmarks indicam que os pools de threads podem proporcionar uma melhoria de desempenho de até 9 vezes para determinadas cargas de trabalho.

    O NGINX Plus R7 também oferece suporte a otimizações de fragmentação de soquetes para aumentar o desempenho em servidores com vários núcleos. Nossos benchmarks indicam que isso pode aumentar em mais de 3 vezes o número de solicitações por segundo e reduzir a latência na mesma proporção. A fragmentação de soquetes usa a opção SO_REUSEPORT e atualmente requer Linux 3.9+ ou DragonFly BSD.
  • Aprimoramentos de controle de acesso e segurança – Recursos novos e ampliados do NGINX Plus ajudam a melhorar a segurança e a confiabilidade das suas aplicações. Os controles de acesso e os limites de conexão para serviços TCP permitem aplicar regras de proteção a todos os serviços gerenciados pelo NGINX, enquanto o suporte à autenticação NT LAN Manager (NTLM) permite implantar o NGINX Plus à frente de aplicações legadas da Microsoft.
  • Monitoramento e diagnóstico aprimorados – O NGINX Plus adiciona dados de monitoramento e estatísticas ainda mais detalhados às ferramentas existentes de status e painel. Monitore erros de clientes, a atividade interna do NGINX e a carga de SSL em seus serviços para ajudar a identificar problemas e ajustar sua configuração.
  • Painel atualizado e interativo do NGINX Plus – O painel de monitoramento de atividades em tempo real do NGINX Plus foi significativamente ampliado e agora oferece uma interface com abas que proporciona visualizações mais detalhadas do desempenho e da integridade do NGINX. Você pode se aprofundar nos dados para identificar e compreender problemas na sua infraestrutura e fazer alterações rápidas nas suas configurações.

“No ano passado, ajudamos centenas de novos clientes a implantar suas aplicações com o NGINX Plus, e nossa versão mais recente tem como objetivo oferecer a eles ainda mais ferramentas para garantir a melhor experiência possível aos seus usuários”, afirma Gus Robertson, CEO da NGINX, Inc. “Somos a base da infraestrutura de nossos clientes, o que nos coloca em uma posição privilegiada para oferecer visibilidade e controle incomparáveis sobre as aplicações que eles implantam. Levamos a sério nosso papel essencial nos negócios de nossos clientes, e os novos recursos do NGINX Plus R7 refletem isso.”

A adoção do NGINX cresceu consideravelmente nos últimos meses. O NGINX é o servidor web nº 1 entre os 100.000 sites mais acessados, sendo usado por quase metade dos sites mais movimentados do mundo para disponibilizar suas aplicações a bilhões de usuários. A NGINX, Inc. continua investindo fortemente tanto em nossas ferramentas de código aberto quanto nas que contam com suporte comercial, para facilitar a entrega impecável de aplicações para todos — desde os aplicativos menores e mais leves até as maiores plataformas do mundo.

Recursos do NGINX Plus R7 em detalhes

Esta seção apresenta uma visão geral detalhada de todos os novos recursos e funcionalidades do NGINX Plus R7.

Implementação de HTTP/2 com suporte completo

O NGINX Plus R7 oferece suporte a HTTP/2, a versão mais recente do protocolo HTTP, por meio do novo pacote nginx-plus-http2. O HTTP/2 proporciona maior desempenho e segurança para aplicações web modernas. O suporte do NGINX Plus a HTTP/2 funciona perfeitamente com seus sites e aplicativos existentes, sem exigir nenhuma alteração neles e apenas mudanças mínimas na configuração do NGINX Plus. O NGINX Plus R7 é totalmente retrocompatível e pode fornecer tráfego HTTP/1.x e HTTP/2 em paralelo, garantindo a melhor experiência, independentemente do navegador escolhido pelos usuários.

O HTTP/2 implementado no servidor oferece suporte a navegadores que usam tanto HTTP/2 quanto HTTP/1.x

Para facilitar a transição para o HTTP/2, o NGINX Plus atua como um “gateway HTTP/2”. No front-end, o NGINX Plus se comunica via HTTP/2 com os navegadores dos clientes que oferecem suporte a esse protocolo e, no back-end, continua se comunicando via HTTP/1.x (ou FastCGI, SCGI, uWSGI etc.), como antes. Isso significa que os servidores e aplicativos que utilizam o NGINX Plus como proxy não serão afetados pela migração para o HTTP/2 e nem sequer precisam saber qual versão do HTTP seus clientes estão usando.

Para oferecer suporte simultâneo a HTTPS e HTTP/2, o NGINX Plus é compatível com as extensões Next Protocol Negotiation (NPN) e Application‑Layer Protocol Negotiation (ALPN) do TLS. Essas extensões são usadas para atualizar de forma transparente uma conexão HTTPS para HTTP/2 caso tanto o cliente quanto o servidor sejam compatíveis com HTTP/2.

A única alteração de configuração necessária é adicionar o parâmetro http2 às diretivas listen existentes. Observe que o HTTP/2 só é compatível quando o parâmetro ssl também está incluído:

server {    listen 443 ssl http2 default_server;
}

Para habilitar o suporte a HTTP/2, instale o pacote nginx-plus-http2 do repositório do NGINX Plus. Esse pacote não oferece suporte a SPDY/3.1. Os pacotes padrão nginx-plus e nginx-plus-extras oferecem suporte a SPDY/3.1 em vez de HTTP/2 e, atualmente, são recomendados para sites em produção devido à maior compatibilidade com navegadores e à maturidade do código. Observe que, no momento, não disponibilizamos uma versão do pacote nginx-plus-extras com suporte a HTTP/2.

Para saber mais sobre HTTP/2:

Desempenho significativamente aprimorado

O NGINX Plus R7 inclui diversas melhorias de desempenho que podem ajudar seus aplicativos a ter um desempenho ainda melhor. Ele adiciona suporte à otimização de pool de threads, que transfere operações de disco potencialmente bloqueantes e melhora o desempenho de cargas de trabalho (como o armazenamento de conteúdo em cache) que envolvem uso intenso de E/S de disco. O NGINX Plus R7 também inclui a otimização de fragmentação de soquetes (requer Linux 3.9+ ou Dragonfly BSD), que melhora a eficiência em grandes servidores multicore nos quais um grande número de processos nginx gerencia o tráfego. Essas melhorias foram testadas em ambientes reais em implantações do NGINX Open Source e agora contam com suporte completo como parte do NGINX Plus.

Pools de threads

O uso de pools de threads no NGINX Plus pode proporcionar um desempenho nove vezes melhor. É amplamente conhecido que o NGINX usa uma abordagem assíncrona e orientada a eventos para gerenciar conexões. No entanto, a abordagem assíncrona e orientada a eventos ainda apresenta um problema: o bloqueio. No Linux, as operações de disco são bloqueantes. Portanto, durante operações que envolvem muita E/S de disco, o NGINX pode passar muito tempo bloqueado em vez de realizar trabalho produtivo.

A alocação de um pool de threads para lidar com a E/S de disco ameniza esse problema. Em vez de acessar o disco diretamente, o processo de trabalho do NGINX transfere a operação de E/S para uma thread disponível no pool e volta a processar o tráfego normalmente. Quando a operação de disco é concluída, o processo de trabalho do NGINX é notificado e pode continuar o trabalho restante necessário para atender à solicitação.

Para habilitar pools de threads, basta adicionar a diretiva aio threads a um bloco location:

location / {    root /storage;
    aio threads;
}

Para uma visão geral detalhada dos pools de threads no NGINX, consulte esta publicação no blog.

Fragmentação de sockets

O particionamento de sockets foi introduzido pela primeira vez no NGINX 1.9.1. Esse recurso utiliza a opção de socket SO_REUSEPORT introduzida na versão 3.9 do kernel Linux. Quando essa opção está habilitada, o próprio kernel Linux distribui uniformemente as novas conexões entre os processos de trabalho do NGINX, em um esquema round-robin. Em seguida, os processos de trabalho executam a limitação de requisições, o armazenamento em cache, o balanceamento de carga e todas as demais tarefas configuradas.

Sem o SO_REUSEPORT, as novas conexões ficam disponíveis para todos os processos de trabalho. O primeiro a retirar uma conexão da fila fica com ela. Como não há um algoritmo para distribuir a carga uniformemente, ela pode facilmente ficar desequilibrada, com alguns processos de trabalho assumindo a maior parte da carga enquanto outros ficam subutilizados. Também é ineficiente fazer com que os processos disputem pacotes, pois isso pode causar contenção de bloqueios.

O particionamento de sockets pode melhorar o desempenho em até três vezes, garantindo que o trabalho seja distribuído uniformemente entre os processos de trabalho do NGINX. Para habilitar essa funcionalidade, adicione o novo parâmetro reuseport às diretivas listen existentes.

server {    listen 12345 reuseport;
    # ...
}

Para saber mais sobre esse recurso, consulte esta publicação no blog.

Observação: este recurso requer a versão 3.9 ou posterior do kernel do Linux. O Ubuntu 13.10 ou posterior e o Red Hat Enterprise Linux 7 ou posterior incluem a funcionalidade necessária.

Aprimoramentos de controle de acesso e segurança

O NGINX Plus R7 adiciona ainda mais recursos para aprimorar a segurança dos seus aplicativos. Esta seção apresenta uma visão geral desses recursos.

Controle e limitação de acesso TCP

Novos recursos de proxy TCP e balanceamento de carga aprimoram o controle de acesso (limitação por endereço IP), a limitação de conexões (limitação do número de conexões simultâneas por cliente ou serviço) e o uso da largura de banda (limitação da largura de banda de upstream ou downstream por conexão). Esses recursos já estão disponíveis para o balanceamento de carga HTTP e são usados com grande sucesso para medição de uso de APIs e proteção contra ataques DDoS.

Para mais detalhes, consulte a publicação relacionada no blog, Balanceamento de carga TCP no NGINX Plus R7<.htmlspan>.

Suporte a NTLM

Atendendo a inúmeros pedidos, o NGINX Plus R7 pode atuar como proxy e balancear a carga de aplicações que usam o Microsoft NT LAN Manager (NTLM) para autenticação. O NTLM é um protocolo de autenticação usado por muitos produtos da Microsoft, especialmente em aplicações legadas.

Nosso suporte a NTLM atende ao requisito de segurança de que as conexões com os servidores de backend sejam mantidas ativas, mas não multiplexadas, para que cada cliente autenticado por NTLM tenha uma conexão exclusiva e dedicada com o servidor de backend.

Para habilitar o suporte a NTLM, adicione a diretiva ntlm à configuração dos grupos de upstream HTTP:

upstream backend {    server 192.168.1.10;
    server 192.168.1.11;
    ntlm;
}

Agora você pode implantar o NGINX com confiança como proxy, balanceador de carga e acelerador HTTP/2 na frente de aplicações da Microsoft, oferecendo suporte à maior variedade possível de dispositivos clientes.

Monitoramento e diagnóstico aprimorados

O NGINX Plus fornece monitoramento e estatísticas detalhados para facilitar a observação, a otimização e a depuração de aplicações e infraestrutura. Com base nesse recurso, o NGINX Plus R7 vem repleto de novos contadores e estatísticas. Esses contadores ajudam você a ajustar suas implantações do NGINX Plus e a tomar decisões fundamentadas sobre quando pode ser necessário aumentar a capacidade ou adicionar mais instâncias para lidar com uma carga maior. As novas estatísticas e os novos contadores são:

  • 499 erros – Contador por servidor que monitora os erros 499, que ocorrem quando o cliente fecha a conexão antes que o servidor de backend termine de processar a solicitação. Alguns erros 499 são aceitáveis (as pessoas costumam fechar o navegador no meio de uma sessão), mas um número elevado pode indicar que o servidor está sobrecarregado e demorando muito para processar as solicitações.
  • Reinicializações do worker do NGINX Plus – O número de vezes que o worker do NGINX Plus foi reiniciado. Isso ajuda a detectar falhas no processo worker do NGINX Plus.
  • Recarregamentos do NGINX Plus – O número de vezes que o NGINX Plus foi recarregado. Isso confirma se o NGINX Plus foi realmente recarregado ou se houve falha no recarregamento por diversos motivos, como uma configuração incorreta.
  • Estouros de fila – Contador por servidor que mede a capacidade de um servidor de lidar com a carga. Um número elevado de estouros de fila indica que o servidor está com dificuldades para acompanhar a demanda.
  • Handshakes SSL – O número de handshakes SSL concluídos.
  • Sessões SSL reutilizadas – O número de sessões SSL que foram reutilizadas de uma sessão anterior.
  • Novas sessões SSL – O número de novas sessões SSL negociadas.

Assim como todos os outros contadores, você habilita os novos contadores incluindo a diretiva api na configuração.

Painel atualizado e interativo do NGINX Plus

O painel do NGINX Plus foi significativamente aprimorado na versão R7, exibindo as principais informações do sistema de forma concisa, mesmo em configurações grandes e complexas:

  • Uma nova guia de visão geral do Painel fornece um resumo completo, em uma única página, da atividade do NGINX Plus e da integridade do seu aplicativo.
  • Uma interface no painel permite adicionar e remover temporariamente servidores de um pool de balanceamento de carga, bem como marcar temporariamente servidores como em processo de drenagem ou inativos.
  • Novos filtros permitem detalhar rapidamente os resultados e encontrar servidores com falha.
  • Uma nova visualização com abas permite alternar rapidamente da aba Painel para visualizações mais detalhadas de zonas, upstreams e informações de cache.
  • Em todo o painel, novas dicas de ferramenta fornecem informações mais detalhadas sobre servidores upstream, recarregamentos de configuração, status do cache e eventuais mensagens de erro.

Para saber mais, consulte a publicação relacionada no blog, O novo painel do NGINX Plus<.htmla>.

Mais algumas novidades

O NGINX Plus R7 conta com várias melhorias adicionais que não se enquadram em nenhuma das categorias acima:

Atualização do Phusion Passenger Open Source para compatibilidade com o NGINX Plus

Se você usa o Phusion Passenger Open Source com o NGINX Plus (a diretiva passenger_root está incluída na sua configuração), é necessário atualizar o runtime do Passenger para a versão 5.0.15 ao mesmo tempo que atualiza para o pacote nginx-plus-extras do NGINX Plus R7. Siga estas etapas (os comandos são apropriados para o Ubuntu):

  1. Pare o NGINX Plus:
# service nginx stop
  1. Atualize o runtime do Phusion Passenger para a versão 5.0.15:
# apt-get install passenger
  1. Atualize o pacote NGINX Plus Extras para a versão R7:
# apt-get install nginx-plus-extras
  1. Faça as atualizações necessárias nas diretivas de configuração do NGINX Plus conforme descrito nas notas de atualização do Phusion Passenger.
  2. Inicie o NGINX Plus:
# service nginx start

As instruções completas de instalação e atualização estão disponíveis no portal do cliente do NGINX Plus.

Atualize ou experimente o NGINX Plus

Se você estiver usando o NGINX Plus, recomendamos enfaticamente que faça a atualização para a versão 7 o mais rápido possível. Você terá acesso a diversas correções e melhorias, além de facilitar nosso atendimento caso precise abrir um chamado de suporte. As instruções de instalação e atualização estão disponíveis no portal do cliente.

Se você ainda não experimentou o NGINX Plus, recomendamos que o teste para aceleração da Web, balanceamento de carga e entrega de aplicações, ou como um servidor Web com suporte completo e APIs avançadas de monitoramento e gerenciamento. Você pode começar gratuitamente hoje mesmo com uma avaliação de 30 dias e conferir como o NGINX Plus pode ajudar você a expandir e disponibilizar suas aplicações.

Ressalvas

  • O NGINX Plus R7 não oferece mais suporte ao Debian 6, ao SLES 11 SP3 nem ao Ubuntu 10.04 LTS ou 14.10, pois essas distribuições não têm mais suporte geral. Antes de atualizar para o NGINX Plus R7, migre para uma distribuição de sistema operacional compatível.
  • NGINX Plus R7 é a última versão que inclui o pacote nginx-plus-lua; se você usa esse pacote, planeje a migração para o pacote nginx-plus-extras no NGINX Plus Release 8.
  • Antes de instalar o pacote nginx-plus-http2, você deve remover o parâmetro spdy de todas as diretivas listen da sua configuração (substitua-o pelos parâmetros http2 e ssl para habilitar o suporte a HTTP/2). Com o pacote nginx-plus-http2, o NGINX Plus não será iniciado se alguma diretiva listen tiver o parâmetro spdy.


Compartilhar

Sobre o autor

Owen Garrett
Owen GarrettDiretor Sênior de Gestão de Produtos

Mais publicações de Owen Garrett

Publicações relacionadas no blog

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade
NGINX | 10/10/2024

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade

Descubra como o F5 NGINX One aprimora o gerenciamento e a observabilidade de ambientes híbridos e multicloud ao oferecer um console web centralizado baseado em SaaS, com insights em tempo real, conformidade automatizada e gerenciamento simplificado de configurações.

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa
NGINX | 17/06/2024

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa

Descubra como transformar uma definição de esquema OpenAPI em uma configuração NGINX totalmente funcional, operando como um API Gateway com a segurança de um Web Application Firewall e um Portal do Desenvolvedor, usando uma abordagem declarativa de API.

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor
NGINX | 14/07/2021

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor

Picos de tráfego e sobrecarga de servidores são preocupações sérias para varejistas online em qualquer época, mas especialmente durante a “Cyber Season” de compras de fim de ano. Detalhamos como você pode aproveitar as soluções de entrega de aplicações de nível de produção da NGINX para se preparar para aumentos repentinos de tráfego.

Distribuição segura de chaves privadas SSL com o NGINX
NGINX | 02/04/2019

Distribuição segura de chaves privadas SSL com o NGINX

Descrevemos três maneiras progressivamente mais seguras de proteger chaves privadas SSL ao configurar o NGINX para processar tráfego HTTPS: permitir acesso de leitura apenas ao usuário root, criptografar as chaves com senhas armazenadas separadamente e distribuir as senhas a partir de um repositório central.

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX
NGINX | 24/05/2018

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX

O módulo JavaScript do NGINX lançado com o NGINX Plus R15 oferece suporte a subsolicitações, possibilitando uma classe totalmente nova de casos de uso para o NGINX Plus. Este exemplo completo também usa a API do NGINX Plus e os módulos de chave-valor para converter solicitações de API dos clientes em solicitações separadas para as APIs dos microsserviços que compõem um aplicativo.

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus
NGINX | 19/04/2016

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus

Confira dicas para evitar o esgotamento de portas efêmeras com ajustes no kernel do Linux, conexões keepalive e conexões vinculadas dinamicamente a endereços IP locais.