BLOG | NGINX

Anunciando o NGINX Plus R7

NGINX-Parte-de-F5-horiz-preto-tipo-RGB
Miniatura de Owen Garrett
Owen Garrett
Publicado em 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 da nossa plataforma de entrega de aplicativos. A atualização fornece uma implementação totalmente suportada do novo padrão web HTTP/2, o primeiro desse tipo para um servidor web líder. O NGINX Plus pode ser implantado como um gateway HTTP/2 frontend e acelerador para serviços web novos e existentes.

[Editor – Esta postagem foi atualizada para se referir à API NGINX Plus , que substitui e desaprova o módulo de status separado mencionado na versão original da postagem.]

A atualização mais recente também adiciona melhorias drásticas e recursos adicionais para garantir que as organizações possam entregar seus aplicativos com o desempenho, a segurança e a confiabilidade necessários para aplicativos corporativos. Isso inclui melhorias significativas para facilitar o monitoramento, o gerenciamento e a depuração de aplicativos, 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 postagens de blog relacionadas:

Confira também nosso webinar sob demanda, O que há de novo no NGINX Plus R7?

Os principais recursos desta versão incluem:

  • Implementação totalmente suportada do HTTP/2 – O NGINX Plus agora fornece uma implementação totalmente suportada do novo padrão web HTTP/2. O NGINX Plus pode ser implantado como um gateway HTTP/2 frontend e acelerador para serviços web novos e existentes.

    O suporte HTTP/2 está disponível apenas no pacote opcional nginx-plus-http2 . Os pacotes nginx-plus e nginx-plus-extras fornecem suporte a SPDY e são atualmente recomendados para sites de produção devido ao suporte mais amplo a navegadores e à maturidade do código.

    Observação : Com base nos testes de usuários do patch de nível alfa e com o suporte inicial dos copatrocinadores corporativos Automattic e Dropbox, a versão final de código aberto do HTTP/2 estará disponível após o lançamento do R7.

  • Desempenho significativamente melhoradoO NGINX Plus R7 oferece suporte a pools de threads para E/S assíncronas . Isso acelera cargas de trabalho que envolvem altos níveis de E/S de disco, como cache de conteúdo. Nossos benchmarks indicam que pools de threads podem gerar uma melhoria de desempenho de até 9x para determinadas cargas de trabalho.

    O NGINX Plus R7 também oferece suporte a otimizações de fragmentação de soquete para aumentar o desempenho em servidores multicore. Nosso benchmarking indica que isso pode aumentar as solicitações por segundo e reduzir a latência em mais de 3x cada . O particionamento de soquete usa a opção SO_REUSEPORT e atualmente requer Linux 3.9+ ou DragonFly BSD.
  • Melhorias no controle de acesso e segurança – Recursos novos e estendidos no NGINX Plus ajudam a melhorar a segurança e a confiabilidade dos seus aplicativos. Os controles de acesso e os limites de conexão para serviços TCP permitem que você aplique regras de proteção a todos os seus serviços gerenciados pelo NGINX, enquanto o suporte à autenticação do NT LAN Manager (NTLM) significa que você pode implantar o NGINX Plus na frente de aplicativos legados da Microsoft.
  • Monitoramento e diagnóstico aprimorados – O NGINX Plus adiciona dados de monitoramento e estatísticas ainda mais detalhados às ferramentas de status e painel existentes. Rastreie erros do cliente, atividades internas do NGINX e a carga SSL em seus serviços para ajudar a identificar problemas e ajustar sua configuração.
  • Painel interativo e atualizado do NGINX Plus – O painel de monitoramento de atividades ao vivo do NGINX Plus foi significativamente ampliado, agora fornecendo uma interface com guias para fornecer visualizações mais detalhadas do desempenho e da integridade do seu NGINX. Você pode se aprofundar para identificar e entender problemas com sua infraestrutura e fazer alterações rápidas em suas configurações.

“Ajudamos centenas de novos clientes a implantar seus aplicativos com o NGINX Plus no ano passado, e nosso último lançamento tem como objetivo fornecer a eles ainda mais ferramentas para garantir a melhor experiência possível para seus usuários”, afirma Gus Robertson, CEO da NGINX, Inc. “Somos a estrutura da infraestrutura dos nossos clientes, e isso nos coloca em uma posição única para poder fornecer visibilidade e controle incomparáveis sobre os aplicativos que eles implantam. Levamos a sério nosso papel crítico 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úmero 1 entre os 100.000 principais sites , com quase metade dos sites mais movimentados do mundo usando o NGINX para entregar seus aplicativos a bilhões de usuários. A NGINX, Inc. continua investindo pesadamente em nossas ferramentas de código aberto e com suporte comercial para facilitar a entrega perfeita de aplicativos 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 fornece uma visão geral detalhada de todos os novos recursos e funcionalidades do NGINX Plus R7 .

Implementação totalmente suportada de HTTP/2

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

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

Para oferecer suporte a HTTPS e HTTP/2 lado a lado, o NGINX Plus oferece suporte às extensões Next Protocol Negotiation (NPN) e Application‑Layer Protocol Negotiation (ALPN) em TLS. Essas extensões são usadas para atualizar facilmente uma conexão HTTPS para HTTP/2 se tanto o cliente quanto o servidor suportarem HTTP/2.

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

servidor { ouvir 443 ssl http2 default_server; }

Para habilitar o suporte HTTP/2, instale o pacote nginx-plus-http2 do repositório NGINX Plus. Este pacote não suporta 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 de produção devido ao suporte mais amplo do navegador e à maturidade do código. Observe que atualmente não criamos uma versão habilitada para HTTP/2 do pacote nginx-plus-extras .

Para saber mais sobre HTTP/2:

Desempenho significativamente melhorado

O NGINX Plus R7 inclui uma série de melhorias de desempenho que podem ajudar seus aplicativos a ter um desempenho ainda melhor. Ele adiciona suporte para otimização de pool de threads , o que alivia operações de disco potencialmente bloqueadoras e melhora o desempenho de cargas de trabalho (como cache de conteúdo) que envolvem E/S de disco pesadas. O NGINX Plus R7 também inclui a otimização de fragmentação de soquete (é necessário Linux 3.9+ ou Dragonfly BSD) que melhora a eficiência em servidores grandes e multicore, onde um grande número de processos nginx manipulam o tráfego. Eles foram testados em campo em implantações NGINX Open Source e agora são totalmente suportados como parte do NGINX Plus.

Pools de Tópicos

Usar pools de threads no NGINX Plus pode proporcionar um desempenho 9x melhor. É bem sabido que o NGINX usa uma abordagem assíncrona e orientada a eventos para lidar com conexões . Mas a abordagem assíncrona e orientada a eventos ainda tem um problema: bloqueio. No Linux, as operações de disco são bloqueadas, portanto, durante operações que envolvem muita E/S de disco, o NGINX pode passar muito tempo bloqueando em vez de fazer trabalho produtivo.

Alocar um pool de threads que manipulam E/S de disco alivia esse problema. Em vez de ir para o disco, o processo de trabalho do NGINX transfere a operação de E/S para um thread disponível no pool e depois volta a processar o tráfego normalmente. Quando a operação do disco é concluída, o processo de trabalho do NGINX é notificado e pode continuar qualquer trabalho que ainda precise ser feito para atender à solicitação.

Para habilitar pools de threads, basta adicionar a diretiva aio threads a um bloco de localização :

localização / { raiz / armazenamento; threads aio ; }

Para uma visão geral completa dos pools de threads no NGINX, consulte esta postagem do blog .

Fragmentação de soquete

A fragmentação de soquetes foi introduzida pela primeira vez no NGINX 1.9.1. Este recurso aproveita a opção de soquete SO_REUSEPORT introduzida na versão 3.9 do kernel Linux. Quando a opção está habilitada, o próprio kernel do Linux distribui novas conexões uniformemente entre os processos de trabalho do NGINX em um sistema round-robin. Os processos de trabalho então fazem o trabalho de limitação de solicitações, armazenamento em cache, balanceamento de carga e tudo o mais que você configurou.

Sem SO_REUSEPORT , novas conexões são disponibilizadas para todos os processos de trabalho disponíveis. O primeiro a tirar uma conexão da fila a obtém. Como não há um algoritmo para distribuir a carga uniformemente, ela pode facilmente ficar distorcida, com alguns processos de trabalho assumindo a maior parte da carga enquanto outros são subutilizados. Também é ineficiente ter processos brigando por pacotes, pois isso pode levar à contenção de bloqueio.

O particionamento de soquete pode melhorar o desempenho em até 3x, 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 de escuta existentes.

servidor {ouvir 12345 reutilização ; #...}

Para saber mais sobre esse recurso, consulte esta postagem do blog .

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

Melhorias no controle de acesso e segurança

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

Controle e limitação de acesso TCP

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

Para mais detalhes, consulte a postagem do blog relacionada, Balanceamento de carga TCP no NGINX Plus R7<.htmlspan> .

Suporte NTLM

Em resposta à demanda popular, o NGINX Plus R7 pode fazer proxy e balancear carga de aplicativos que usam o Microsoft NT LAN Manager ( NTLM ) para autenticação. NTLM é um protocolo de autenticação usado por muitos produtos da Microsoft, especialmente com aplicativos legados.

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

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

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

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

Monitoramento e diagnóstico aprimorados

O NGINX Plus fornece monitoramento e estatísticas detalhadas para facilitar a observação, a otimização e a depuração de aplicativos e infraestrutura. Com base nessa capacidade, o NGINX Plus R7 vem carregado com novos contadores e estatísticas. Esses contadores ajudam você a ajustar suas implantações do NGINX Plus e a tomar decisões informadas sobre quando você pode precisar aumentar ou diminuir a escala para lidar com mais carga. As novas estatísticas e contadores são:

  • 499 erros – Contador por servidor que rastreia499 erros, que ocorrem quando o cliente fecha a conexão antes que o servidor de backend termine de processar sua solicitação. Um pouco499 erros são aceitáveis (as pessoas geralmente fecham seus navegadores no meio de uma sessão), mas um grande número pode indicar que o servidor está sobrecarregado e demorando muito para processar solicitações.
  • Reinicializações do trabalhador NGINX Plus – O número de vezes que o trabalhador NGINX Plus foi reiniciado. Isso ajuda a detectar falhas no processo de trabalho do NGINX Plus.
  • Recargas do NGINX Plus – O número de vezes que o NGINX Plus foi recarregado. Isso confirma que o NGINX Plus foi realmente recarregado ou que uma recarga falhou devido a vários motivos, como configuração inadequada.
  • Estouros de fila – Contador por servidor que mede o quão bem um servidor lida com a carga. Um alto número de estouros de fila indica que o servidor está com dificuldades para acompanhar.
  • 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.

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

Painel NGINX Plus interativo e atualizado

O painel do NGINX Plus foi bastante aprimorado no R7, exibindo informações importantes do sistema em um formato conciso, mesmo para configurações grandes e complexas:

  • Uma nova guia de visão geral do painel fornece um resumo completo de uma única página da atividade do NGINX Plus e um resumo da integridade do seu aplicativo.
  • Uma interface no painel permite que você adicione e remova temporariamente servidores em um pool de balanceamento de carga, bem como marque temporariamente servidores como esgotados ou inativos.
  • Novos filtros permitem que você faça uma busca detalhada e encontre servidores com falha rapidamente.
  • Uma nova visualização em guias permite que você alterne rapidamente da guia Painel para visualizações mais detalhadas de zonas, upstreams e informações de cache.
  • Em todo o painel, novas dicas de ferramentas fornecem informações mais detalhadas sobre servidores upstream, recarregamentos de configuração, status de cache e quaisquer mensagens de erro.

Para saber mais, consulte a postagem do blog relacionada, O novo painel do NGINX Plus<.htmla>.

Mais algumas guloseimas

O NGINX Plus R7 tem uma série de melhorias adicionais que não se enquadram em nenhuma das categorias acima:

  • Streaming HLS aprimorado – O NGINX Plus agora oferece suporte aos argumentos start , end e offset em URIs HLS .m3u8 . Isso permite que os editores de conteúdo publiquem facilmente links para fragmentos de um fluxo de vídeo.
  • Modificação de conteúdo – Anteriormente, o NGINX Plus podia fazer apenas uma alteração simples no conteúdo de uma resposta, substituindo uma string por outra. A diretiva sub_filter foi estendida para oferecer suporte a variáveis e cadeias de substituições, possibilitando alterações mais complexas.

    Os recursos expandidos de modificação de conteúdo facilitam a adaptação do conteúdo da web, por exemplo, alterando o método ( https:// em vez de http:// ), o domínio ou outros elementos de caminho em hiperlinks no conteúdo da mensagem. Você também pode usá-lo para inserir conteúdo em páginas HTML, como texto padrão ou trechos de JavaScript, sem precisar modificar o conteúdo HTML original.

  • Variável $upstream_connect_time – Uma nova variável NGINX que rastreia o tempo que leva para se conectar a um servidor de backend, facilitando a identificação de servidores lentos.
  • Config dump – O novo sinalizador ‑T no comando nginx despeja a configuração NGINX analisada no stdout em um formato claro e padronizado. Isso é útil para fins de arquivamento ou ao registrar um tíquete de suporte.
  • Balanceamento de carga TCP mais configurável – As diretivas proxy_bind , proxy_protocol e tcp_nodelay , e o parâmetro backlog para a diretiva listen , agora são suportados para tráfego TCP (módulo stream ), bem como para tráfego HTTP. Para mais detalhes, consulte Balanceamento de carga TCP no NGINX Plus R7<.htmlspan> .
  • Suporte ao Redis – O módulo Redis de terceiros ( lua-resty-redis ) agora está integrado ao pacote nginx-plus-extras . Ele permite que o NGINX Plus interaja com um banco de dados Redis (por exemplo, para obter e definir valores) e é totalmente suportado como parte de uma assinatura do NGINX Plus.
  • Módulo Phusion Passenger atualizado – O módulo Phusion Passenger Open Source foi atualizado para a versão 5.0.15.

Atualizando o Phusion Passenger Open Source para ser compatível com o NGINX Plus

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

  1. Pare o NGINX Plus:

    # serviço nginx stop
  2. Atualize seu tempo de execução Phusion Passenger para 5.0.15:

    # apt-get install passageiro
  3. Atualize o pacote NGINX Plus Extras para R7:

    # apt-get install nginx-plus-extras
  4. 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.

  5. Inicie o NGINX Plus:

    # serviço nginx start

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 executando o NGINX Plus, recomendamos fortemente que atualize para a versão 7 o mais rápido possível. Você aprenderá uma série de correções e melhorias, e isso nos ajudará a ajudar você caso precise abrir um tíquete de suporte. Instruções de instalação e atualização podem ser encontradas no portal do cliente .

Se você ainda não experimentou o NGINX Plus , recomendamos que experimente para aceleração web, balanceamento de carga e entrega de aplicativos, ou como um servidor web totalmente suportado com APIs aprimoradas de monitoramento e gerenciamento . Você pode começar hoje mesmo gratuitamente com uma avaliação de 30 dias e ver por si mesmo como o NGINX Plus pode ajudar você a expandir e entregar seus aplicativos.

Advertências

  • O NGINX Plus R7 não oferece mais suporte ao Debian 6, SLES 11 SP3 ou Ubuntu 10.04 LTS ou 14.10, porque essas distribuições não são mais suportadas de forma geral. Antes de atualizar para o NGINX Plus R7 , atualize para uma distribuição de sistema operacional compatível .
  • O NGINX Plus R7 é a última versão que inclui o pacote nginx-plus-lua ; se você estiver usando esse pacote, planeje migrar 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 em todas as diretivas listen na sua configuração (substitua-o pelos parâmetros http2 e ssl para habilitar o suporte ao HTTP/2). Com o pacote nginx-plus-http2 , o NGINX Plus falha ao iniciar se alguma diretiva de escuta tiver o parâmetro spdy .

"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."