Como ativar o HTTP/2 em Apache no Ubuntu

Como ativar o HTTP/2 em Apache no Ubuntu

Desde o início do Rede mundial de computadores (www), o Http O protocolo evoluiu ao longo dos anos para fornecer conteúdo digital seguro e rápido pela Internet.

A versão mais usada é Http 1.1 E enquanto ele pode fazer aprimoramentos de recursos e otimizações de desempenho para abordar as deficiências das versões anteriores, fica aquém de alguns outros recursos salientes que foram abordados pelo Http/2.

Quais são as limitações de http/1.1?

O Http/1.1 O protocolo está repleto de deficiências a seguir que o tornam menos ideal, especialmente ao executar servidores da Web de alto tráfego:

  1. Atrasos no carregamento de páginas da web devido a longos cabeçalhos HTTP.
  2. Http/1.1 só pode enviar uma solicitação para cada arquivo por conexão TCP.
  3. Dado que http/1.1 Processos Uma solicitação para cada conexão TCP, os navegadores são forçados a enviar um dilúvio de conexões paralelas de TCP para processar simultaneamente as solicitações. Isso leva ao congestionamento do TCP e, finalmente, desperdício de largura de banda e degradação da rede.

Os problemas acima mencionados geralmente levaram à degradação do desempenho e aos altos custos indiretos no uso da largura de banda. Http/2 entrou em cena para resolver esses problemas e agora é o futuro dos protocolos HTTP.

Vantagens de usar http/2

Oferece as seguintes vantagens:

  1. Compressão do cabeçalho que minimiza as solicitações do cliente e, assim, reduz o consumo de largura de banda. O efeito resultante é a velocidade de carga rápida.
  2. Multiplexando vários pedidos sobre uma conexão TCP. Tanto o servidor quanto o cliente podem dividir uma solicitação HTTP em vários quadros e reagrupar -os do outro lado.
  3. Performances da web mais rápidas que, consequentemente, levam a uma melhor classificação de SEO.
  4. Segurança aprimorada, pois a maioria dos navegadores convencionais carrega http/2 sobre https.
  5. HTTP/2 é considerado mais amigável para dispositivos móveis, graças ao recurso de compactação de cabeçalho.

Dito isto, vamos habilitar Http/2 sobre Apache sobre Ubuntu 20.04 LTS e Ubuntu 18.04 LTS.

Pré -requisitos:

Antes de começar, verifique se você habilita Https no servidor da web do Apache antes de ativar Http/2. Isso ocorre porque todos os principais navegadores da web suportam Http/2 sobre Https. Eu tenho um nome de domínio apontado para uma instância em Ubuntu 20.04 que está executando o servidor Apache protegido usando o certificado Let's Crypt.

Além disso, é recomendável que você tenha Apache 2.4.26 e versões posteriores para servidores de produção que pretendem mudar para Http/2.

Para verificar a versão de Apache Você está correndo, execute o comando:

$ apache2 -v 
Verifique a versão Apache no Ubuntu

Da saída, você pode ver que estamos usando a versão mais recente, que é Apache 2.4.41 no momento de escrever este artigo.

Ativar http/2 em um host virtual Apache

Para começar, primeiro confirme que o servidor da web está executando Http/1.1. Você pode fazer isso em um navegador abrindo a seção Ferramentas do desenvolvedor sobre Google Chrome usando o Ctrl + Shift + i combinação. Clique no 'Rede'guia e localize o'Protocolo'coluna.

Confirme a versão do protocolo HTTP

Em seguida, habilite o Http/2 módulo on Ubuntu Ao executar o seguinte comando.

$ sudo a2enmod http2 
Ativar http/2 no ubuntu

Em seguida, localize e edite seu Ssl Arquivo de host virtual, se você ativou HTTPs usando Vamos criptografar, Um novo arquivo é criado com um le-ssl.conf sufixo.

$ sudo vim/etc/apache2/sites-inabled/your-domain-name-le-ssl.conf 

Insira a diretiva abaixo após o marcação.

Protocolos H2 HTTP/1.1 
Ativar http/2 no apache

Para salvar as mudanças, reinicie o servidor da web do Apache.

$ sudo systemctl reiniciar apache2 

Para verificar se Http/2 está habilitado, busque os cabeçalhos HTTP usando o seguinte comando curl como show.

$ curl -i - -http2 -s https: // domínio.com/ | grep http 
Verifique o suporte HTTP/2 no Apache

Você deve obter a saída mostrada.

Http/2 200 

No navegador, recarregue seu site. Em seguida, volte para as ferramentas do desenvolvedor e confirme o http/2 indicado pelo H2 etiqueta no 'Protocolo'coluna.

Confirmar versão do protocolo HTTP/2

Ao usar o módulo MOD_PHP com Apache

Se você estiver correndo Apache ao lado do mod_php módulo, você precisa mudar para PHP-FPM. Isso é porque o mod_php módulo usa a pré -remarcada Mpm módulo que não é suportado por Http/2. Você precisa desinstalar a pré -coisa Mpm e mudar para o mpm_event módulo que será suportado por Http/2.

Se você estiver usando o Php 7.4 mod_php módulo, por exemplo, desative -o como mostrado:

$ sudo a2dismod php7.4 
Desative o módulo mod_php

Depois disso, desative a pré -referência Mpm módulo.

$ sudo a2dismod mpm_prefork 
Desative o pré -esquetor mpm em apache

Depois de desativar os módulos, a seguir, ative o Evento MPM, Fast_cgi, e setenvif módulos como mostrado.

$ sudo a2enmod mpm_event proxy_fcgi setenvif 
Ativar MPM de Evento no Apache

Instale o PHP-FPM no Ubuntu

Em seguida, instale e inicie PHP-FPM como mostrado.

$ sudo apt install php7.4-fpm $ sudo systemctl start php7.4-fpm 

Então habilite PHP-FPM Para começar na hora da inicialização.

$ sudo systemctl Ativar php7.4-fpm 

Em seguida, ativar PHP-FPM como manipulador de php da Apache e reinicie o servidor da web do Apache para que as alterações sejam efetuadas.

$ sudo a2enconf php7.4-fpm 

Ativar suporte http/2 no apache ubuntu

Em seguida, ative o módulo HTTP/2 como antes.

$ sudo a2enmod http2 

Reinicie o Apache para sincronizar todas as mudanças.

$ sudo systemctl reiniciar apache2 

Por fim, você pode testar se o seu servidor está usando o Http/2 protocolo usando o comando curl como mostrado.

$ curl -i - -http2 -s https: // domínio.com/ | grep http 
Verifique o protocolo HTTP/2 no Apache

Você também pode optar por usar as ferramentas do desenvolvedor no Google Chrome navegador para verificar como documentado anterior. Temos até o final deste guia, esperamos que você tenha encontrado as informações valiosas e que você possa ativar confortavelmente Http/2 sobre Apache com facilidade.