Atualize o Nginx por trás do cloudflare para http2. Fazer ou não?

1

Estou executando a versão nginx: 1.12.1 por trás de uma máquina CloudFlare. O front da CloudFlare é http2 ativado.

Gostariadesaberseéumaboaideiaatualizarparao Nginx 1.9.5 que suporta http2 . O custo da atualização é significativo. Meu Linodo centos é

centos-release-7-3.1611.el7.centos.x86_64

e o pacote Nginx padrão que vem através do repositório rpm ainda está no Nginx 1.12.

O upgrade da versão Nginx por trás de um CloudFlare traz vantagens significativas?

Editar: Pinte-me ingênuo, mas achei que 1,12 era menor que 1,9. Me bobo. Voltando à 2ª pergunta, isso causa impacto?

    
por Quintin Par 16.09.2017 / 20:10

4 respostas

3

CloudFlare não acessa servidores de origem usando HTTP / 2 , somente HTTP / 1.1. Eu posso confirmar isso olhando meus logs do servidor.

Por causa disso, não faz sentido ativar o HTTP / 2 se o seu servidor for acessado apenas pelo CloudFlare.

Atualizar

Para expandir a resposta, o CloudFlare usa o HTTP / 2 entre o CDN e o navegador do cliente. Isso dá um ganho de desempenho para o navegador. A conexão de backend com a origem é menos importante porque, na maioria dos sites, a maioria dos recursos é armazenada em cache.

Poderia acelerar um pouco as coisas se usassem o HTTP / 2, mas eles são uma boa companhia e, se isso for útil, eles eventualmente o farão.

    
por 17.09.2017 / 01:26
2

Como outros já mencionaram, o Cloudflare atualmente não fala HTTP / 2 para os servidores de origem, portanto, há pouca vantagem na implementação do HTTP / 2 em seu servidor de origem.

O principal benefício do HTTP / 2 é em conexões de baixa latência, como navegador para servidor, que você já tem no Cloudflare para servir recursos por HTTP / 2. Há menos benefícios para conexões entre servidores e servidores.

Além disso, a Cloudflare usa uma versão do Nginx e atualmente não suporta HTTP / 2 para o lado do servidor e Nginx afirmaram que não têm intenção de adicioná-lo :

Is HTTP/2 proxy support planned for the near future?

Short answer:

No, there are no plans.

Long answer:

There is almost no sense to implement it, as the main HTTP/2 benefit is that it allows multiplexing many requests within a single connection, thus [almost] removing the limit on number of simalteneous requests - and there is no such limit when talking to your own backends. Moreover, things may even become worse when using HTTP/2 to backends, due to single TCP connection being used instead of multiple ones.

On the other hand, implementing HTTP/2 protocol and request multiplexing within a single connection in the upstream module will require major changes to the upstream module.

Due to the above, there are no plans to implement HTTP/2 support in the upstream module, at least in the foreseeable future. If you still think that talking to backends via HTTP/2 is something needed - feel free to provide patches.

Você pode concordar ou discordar com o acima, mas isso pareceu bastante definitivo quando foi escrito (em 2015) e não viu uma atualização desde então, embora o pedido de ingresso para isso foi reaberto há 4 meses e foi deixado em aberto.

Isso não quer dizer que o Cloudflare não vá em frente e faça isso por conta própria ( como o fez com o Server Push antes que o Nginx suportasse isso ), mas eu diria que é menos provável que, enquanto a plataforma principal na qual eles são baseados, não suporte isso.

Finalmente você afirma que está no Centos 7.3. Isso tem uma versão mais antiga do OpenSSL (1.0.1) que não suporta ALPN necessária para permitir HTTP / 2 para navegadores baseados no Chromium (Chrome e Opera) e possivelmente mais clientes HTTP / 2 no futuro, então isso pode ser necessário com uma implementação futura para o Cloudflare. O muito recentemente lançado Centos 7.4 inclui o OpenSSL 1.0.2 que suporta ALPN na teoria, mas as versões empacotadas do Nginx no momento da escrita ainda são compiladas com a versão antiga, o que não ajuda (ainda). Veja esta postagem do blog para mais detalhes . Portanto, não é apenas uma questão de atualizar o Nginx, mas também o sistema operacional e / ou OpenSSL e, mesmo assim, isso não ajudará no momento. Claro que há maneiras de contornar isso (instalar a partir do código-fonte, rodá-lo em uma imagem do Docker ... etc.), mas se você disser que o custo para atualizar o Nginx sozinho é significativo, então imagino que esse material extra realmente vai colocar um prego naquele caixão.

No geral, eu diria que deixem bem o suficiente por enquanto e aproveitem o fato de você ter suporte HTTP / 2 fornecido e cuidado pela Cloudflare. Na verdade, uma das maneiras mais simples de obter o HTTP / 2, considerando todos os problemas mencionados acima, é usar um serviço como o Cloudflare e não se incomodar em implementar isso em sua própria infraestrutura.

    
por 18.09.2017 / 22:47
1

centos-release-7.3.1611.el7.centos.x86_64 é a versão do CentOS que você instalou, não a versão do nginx.

O nginx 1.12.1, que você atualmente instalou, é uma versão significativamente mais recente que a versão 1.9.5 (porque 12 é maior que 9). Contanto que os binários que você está usando tenham sido criados com o http2 ativado, você poderá usar esse recurso sem alterar sua versão nginx.

    
por 17.09.2017 / 00:27
0

Você está dizendo que tem o Nginx 1.12.1 instalado e (corretamente) que o Nginx suportou o HTTP / 2 desde a versão 1.9.5.

Como você já tem uma versão mais recente, não entendo por que está falando sobre a necessidade de fazer upgrade. (Você parece ter a última versão estável a partir de agora).

Parece que você deve estar configurado em todas as versões e, provavelmente, só precisa de uma alteração de configuração (adicione http2 ao SSL relevante listen diretivas).

    
por 17.09.2017 / 00:43