Desde a criação da World Wide Web (www), o protocolo HTTP evoluiu ao longo dos anos para fornecer conteúdo digital seguro e rápido pela internet.
A versão mais amplamente utilizada é o HTTP 1.1 e, embora contenha aprimoramentos de recursos e otimizações de desempenho para lidar com as deficiências das versões anteriores, ele fica aquém de algumas outras características importantes que foram abordadas pelo HTTP/2.
Quais são as Limitações do HTTP/1.1?
O protocolo HTTP/1.1 está repleto das seguintes deficiências que o tornam menos ideal, especialmente ao executar servidores web de alto tráfego:
- Atrasos no carregamento de páginas da web devido a cabeçalhos HTTP longos.
- O HTTP/1.1 só é capaz de enviar uma solicitação para cada arquivo por conexão TCP.
- Dado que o HTTP/1.1 processa uma solicitação para cada conexão TCP, os navegadores são forçados a enviar uma enxurrada de conexões TCP paralelas para processar as solicitações simultaneamente. Isso leva à congestão TCP e, em última instância, ao desperdício de largura de banda e degradação da rede.
Os problemas mencionados acima frequentemente levaram à degradação do desempenho e a altos custos indiretos no uso da largura de banda. O HTTP/2 entrou em cena para resolver esses problemas e é agora o futuro dos protocolos HTTP.
Vantagens de Usar o HTTP/2
Ele oferece as seguintes vantagens:
- Compressão de cabeçalho que minimiza as solicitações do cliente e, assim, reduz o consumo de largura de banda. O efeito resultante são velocidades rápidas de carregamento de páginas.
- Multiplexando várias solicitações em uma conexão TCP. Tanto o servidor quanto o cliente podem dividir uma solicitação HTTP em vários quadros e reagrupá-los no outro extremo.
- Desempenhos web mais rápidos que consequentemente levam a uma melhor classificação de SEO.
- Segurança aprimorada, uma vez que a maioria dos navegadores populares carrega o HTTP/2 sobre HTTPS.
- O HTTP/2 é considerado mais amigável para dispositivos móveis graças à funcionalidade de compressão de cabeçalho.
Dito isso, vamos habilitar HTTP/2 no Apache no Ubuntu 20.04 LTS e no Ubuntu 18.04 LTS.
Pré-requisitos:
Antes de começar, certifique-se de habilitar o HTTPS no servidor web Apache antes de habilitar o HTTP/2. Isso ocorre porque todos os navegadores web populares suportam o HTTP/2 sobre HTTPS. Eu tenho um nome de domínio apontado para uma instância no Ubuntu 20.04 que está executando o servidor Apache protegido usando um certificado Let’s Encrypt.
Também é recomendado ter o Apache 2.4.26 e versões posteriores para servidores de produção que pretendem migrar para o HTTP/2.
Para verificar a versão do Apache que você está executando, execute o comando:
$ apache2 -v

A partir da saída, você pode ver que estamos usando a versão mais recente, que é Apache 2.4.41 no momento da redação deste artigo.
Ative o HTTP/2 em um Virtual Host do Apache
Para começar, confirme primeiro que o servidor web está executando HTTP/1.1. Você pode fazer isso em um navegador abrindo a seção de ferramentas para desenvolvedores no Google Chrome usando a combinação Ctrl + SHIFT + I
. Clique na guia ‘Rede’ e localize a coluna ‘Protocolo’.

Em seguida, ative o módulo HTTP/2 no Ubuntu executando o seguinte comando.
$ sudo a2enmod http2

Em seguida, localize e edite o arquivo de virtual host SSL, se você tiver habilitado o HTTPS usando o Let’s Encrypt, um novo arquivo é criado com um sufixo le-ssl.conf.
$ sudo vim /etc/apache2/sites-enabled/your-domain-name-le-ssl.conf
Insira a diretiva abaixo após a tag <VirtualHost *:443>
.
Protocols h2 http/1.1

Para salvar as alterações, reinicie o servidor web Apache.
$ sudo systemctl restart apache2
Para verificar se o HTTP/2 está ativado, obtenha os cabeçalhos HTTP usando o seguinte comando curl conforme mostrado.
$ curl -I --http2 -s https://domain.com/ | grep HTTP

Você deve obter a saída mostrada.
HTTP/2 200
No navegador, recarregue seu site. Em seguida, volte para as ferramentas para desenvolvedores e confirme o HTTP/2 indicado pelo rótulo h2
na coluna ‘Protocolo’.

Ao Usar o Módulo mod_php com o Apache
Se você estiver executando o Apache juntamente com o módulo mod_php, você precisa mudar para o PHP-FPM. Isso ocorre porque o módulo mod_php usa o módulo prefork MPM, que não é suportado pelo HTTP/2. Você precisa desinstalar o módulo prefork MPM e mudar para o módulo mpm_event, que será suportado pelo HTTP/2.
Se você estiver usando o módulo PHP 7.4 mod_php, por exemplo, desative-o conforme mostrado:
$ sudo a2dismod php7.4

Em seguida, desative o módulo prefork MPM.
$ sudo a2dismod mpm_prefork

Após desativar os módulos, em seguida, ative os módulos Event MPM, Fast_CGI e setenvif conforme mostrado.
$ sudo a2enmod mpm_event proxy_fcgi setenvif

Instale o PHP-FPM no Ubuntu
Em seguida, instale e inicie o PHP-FPM conforme mostrado.
$ sudo apt install php7.4-fpm $ sudo systemctl start php7.4-fpm
Em seguida, habilite o PHP-FPM para iniciar no momento da inicialização.
$ sudo systemctl enable php7.4-fpm
Depois, habilite o PHP-FPM como manipulador PHP do Apache e reinicie o servidor web Apache para que as alterações tenham efeito.
$ sudo a2enconf php7.4-fpm
Habilitar Suporte HTTP/2 no Apache Ubuntu
Em seguida, habilite o módulo HTTP/2 como antes.
$ sudo a2enmod http2
Reinicie o Apache para sincronizar todas as alterações.
$ sudo systemctl restart apache2
Por fim, você pode testar se o seu servidor está usando o protocolo HTTP/2 usando o comando curl conforme mostrado.
$ curl -I --http2 -s https://domain.com/ | grep HTTP

Você também pode optar por usar as ferramentas do desenvolvedor no navegador Google Chrome para verificar, conforme documentado anteriormente. Chegamos ao final deste guia. Esperamos que você tenha achado as informações valiosas e que possa habilitar confortavelmente o HTTP/2 no Apache com facilidade.
Source:
https://www.tecmint.com/enable-http2-in-apache-on-ubuntu/