Devemos usar o HTTP2 do Apache?

6

Eu queria usar o HTTP2 com o Apache 2.4.16 (provavelmente precisaria atualizar para o 2.4.17) e esbarrei com esse comentário na página oficial do Apache.

Warning

This module is experimental. Its behaviors, directives, and defaults are subject to more change from release to release relative to other standard modules. Users are encouraged to consult the "CHANGES" file for potential updates.

Por outro lado, muitos outros estão fazendo tutoriais sobre como ativá-lo. Então, é seguro usá-lo ou devemos esperar?

Além disso, podemos usar o HTTP2 em combinação com o Proxy Reverso?

    
por David Garus 27.03.2017 / 15:36

1 resposta

8

Atualização: A partir do Apache 2.4.26, o mod_http2 não é mais considerado experimental. A resposta abaixo foi atualizada para refletir isso.

Observe também que o mod_http2_proxy ainda é considerado experimental.

O Tag Experimental é adicionado quando a funcionalidade é adicionada pela primeira vez e, como o texto explica, avisa que a implementação, as opções e as APIs podem estar sujeitas a alterações. Portanto, se você estiver usando um recurso experimental, leia atentamente o arquivo de alterações ao instalar as atualizações subseqüentes Certifique-se de que você está ciente de todas as alterações que você precisará fazer.

A tag Experimental não significa que a implementação é instável. Geralmente, as opções instáveis não serão adicionadas diretamente à árvore de origem principal do Apache e, em vez disso, serão tratadas como módulos instaláveis separados.

Dizendo que, para usar HTTP / 2 você precisará atualizar para o 2.4.17 pelo menos, mas realmente deve atualizar para o mais recente (2.4.26 no momento da escrita), já que este módulo está mudando um pouco, teve um número de melhorias de bug e desempenho desde o lançamento, e até abordou vários CVEs (incluindo: 2016-1546 2016-8740 e 2017-7659 ). Isso não quer dizer que seja particularmente problemático ou perigoso, e há muitos outros CVEs no Apache (e praticamente todos os outros softwares), mas isso significa que você realmente deve executar a versão mais recente.

Você também precisará compilar o OpenSSL 1.0.2 para trabalhar com o Chrome e o Firefox (pois eles só permitem que o protocolo ALPN mais recente e não o protocolo NPN mais antigo negocie a conexão HTTP / 2), o que pode ser uma dor extra como a maioria dos gerenciadores de pacotes não inclui isso ainda. A partir do 2.4.26, o Apache também suporta o OpenSSL 1.1.

A execução de versões mais recentes e a compilação a partir da origem, em vez de gerentes de pacotes (por exemplo, yum ou APT) exigem um esforço extra e disciplina (pois não serão instaladas ou corrigidas com facilidade), além do escopo da sua pergunta. mas não é algo para ser introduzido de ânimo leve. Isso tudo está assumindo que você está no Linux. Se você está no Windows, provavelmente já está baixando e instalando separadamente.

Finalmente, para o ponto crucial da sua pergunta. No release Apache 2.4.26, o aviso experimental foi descartado para o módulo mod_http2 principal, embora ainda esteja em vigor para o módulo mod_proxy_http2 mais recente. Eu pessoalmente tenho rodado o HTTP / 2 no meu blog pessoal desde 2.4.17 e nunca tive problemas reais com ele. Parece estável o suficiente para mim. Então, novamente eu não recebo altos volumes de tráfego e não é um grande problema para mim se ele cair. Eu correria contra um site de produção real? Provavelmente não até que o alerta experimental fosse removido (2.4.26). Então, novamente, a única maneira que isso acontece é se as pessoas experimentarem. O HTTP / 2 também é bastante fácil de desligar se causar problemas. Basicamente depende totalmente do seu apetite ao risco. Você pode ler (e assinar) a lista de problemas conhecidos no GitHub ( link ) e o autor do módulo é muito responsivo e útil.

Não tenho certeza do que você está perguntando sobre a funcionalidade do proxy reverso. Desde 2.4.21 o Apache introduziu mod_proxy_http2 que lida com backends HTTP / 2, mas eu diria que é ainda menos usado e testado (ainda marcado como experimental). Também não é tão útil: os principais benefícios do HTTP / 2 são em redes de alta latência (ou seja, de cliente para frontend), em vez de nas conexões frontend-backend de baixa latência. Então, por enquanto, eu teria HTTP / 2 no Apache, mas manteria a conexão do proxy reverso com qualquer infra-estrutura de backend para HTTP / 1. E sim, isso funciona absolutamente bem, se é isso que você estava perguntando, embora as respostas para be benefits to speaking HTTP / 2 durante todo o tempo .

    
por 27.03.2017 / 22:13