Habilitar o HTTP/2 no Apache do Ubuntu 16.04/20.04

Desde o início da Word Wide Web (WWW), o protocolo HTTP está evoluindo ao longo dos anos, para fornecer sempre um conteúdo digital de forma segura e rápida na internet. A versão mais usada atualmente é a HTTP/1.1, e embora ela possua aprimorados recursos e otimizações de desempenho para lidar com as deficiências das versões anteriores, fica muito atrás dos novos recursos implementados no HTTP/2.

[ Hits: 4.496 ]

Por: Diego Mendes Rodrigues em 07/09/2020 | Blog: https://www.linkedin.com/in/diegomendesrodrigues/


Introdução



Desde o início da Word Wide Web (WWW), o protocolo HTTP está evoluindo ao longo dos anos para fornecer sempre um conteúdo digital de forma segura e rápida na internet. A versão mais usada atualmente é a HTTP/1.1 e, embora ela possua aprimorados recursos e otimizações de desempenho para lidar com as deficiências das versões anteriores, fica muito atrás dos novos recursos implementados no HTTP/2.

O HTTP/2 é uma revisão importante do protocolo de rede HTTP, usado atualmente pela internet e redes privadas. Ele foi desenvolvido pelo HTTP Working Group do Internet Engineering Task Force, sendo a primeira nova versão do HTTP desde o HTTP/1.1, padronizada na RFC 2068 em 1997. A especificação HTTP/2 foi publicada como RFC 7540 em 14 de maio de 2015.

Desta forma, o esforço de padronização desta nova versão ocorreu até o final de 2015, sendo ele suportado pelos principais navegadores, como Chrome, Opera, Firefox, Internet Explorer 11, Safari, Amazon Silk e Edge.

De acordo com a empresa W3Techs, em abril de 2020, 43,6% dos 10 milhões de sites mais acessados já suportavam e utilizavam o HTTP/2.

Versões do protocolo HTTP

Linux: Habilitar o HTTP/2 no Apache do Ubuntu
Fonte: HTTP/2: the Future of the Internet | Akamai

Diferenças entre o HTTP/2 e o HTTP/1.1

As alterações realizadas na nova versão não exigem, ou seja, não precisam que sejam realizadas nenhuma mudança no funcionamento dos aplicativos web já existentes, embora os novos aplicativos possam tirar proveito dos novos recursos, aumentando suas velocidades. Observe que o HTTP/2 deixa toda a semântica de alto nível do HTTP/1.1, como métodos, códigos de status, campos de cabeçalho e URLs, da mesma forma. A grande novidade é como os dados são estruturados e transportados entre o cliente e o servidor.

Tenha em mente que os sites mais eficientes minimizam o número de solicitações necessárias para renderizar uma página inteira, através da minificação (ou seja, reduzindo a quantidade de código e empacotando partes menores de código em pacotes grandes, sem reduzir sua capacidade de funcionar) de recursos, como imagens e scripts. No entanto, a minificação não é necessariamente conveniente e nem eficiente em todos os casos, e ainda pode exigir conexões HTTP separadas para obter a página e os recursos minificados.

O HTTP/2 permite que o servidor envie conteúdo para os clientes, ou seja, responda com dados para mais consultas do que o cliente solicitou. Esta alteração na nova versão, permite que o servidor forneça dados que sabe que um navegador precisará renderizar numa página da Web, ao invés de esperar que o navegador examine a primeira resposta, sem a sobrecarga de um ciclo de solicitação adicional.

Outras melhorias de desempenho adicionais no primeiro rascunho do HTTP/2, vêm da multiplexação de solicitações e respostas, evitando alguns dos problemas de bloqueio de cabeça de fila no HTTP/1.1, compressão de cabeçalho além de priorização de solicitações. O HTTP/2 não oferece mais suporte ao mecanismo de codificação de transferência em blocos do HTTP/1.1, pois fornece mecanismos próprios e mais eficientes para o fluxo de dados.

O HTTP/2 é definido para URLs HTTP, ou seja, sem criptografia, e para URLs HTTPS, sobre TLS, onde o TLS 1.2, ou mais recente é exigido. Embora o padrão em si não exija o uso de criptografia, todas as principais implementações de navegadores web com o Firefox, Chrome, Safari, Opera, IE e Edge, declararam que suportam apenas HTTP/2 sobre TLS, o que torna a criptografia de fato obrigatória.

Neste artigo, irei agora demonstrar como habilitar o HTTP/2 no Apache 2, em um servidor com Ubuntu 20.04 LTS, ou Ubuntu 18.04 LTS.

Pré-requisitos

Antes de iniciar, habilite o HTTPS no seu servidor web Apache para poder habilitar o HTTP/2. Isso é necessário, pois como já exposto anteriormente, os navegadores web suportam o HTTP/2 sobre o HTTPS. Caso você não tenha o HTTPS instalado, procure na internet como habilitá-lo utilizando um certificado Let´s Encrypt. Recomendo também a utilização da versão mais atual do Apache, a 2.4.x.

Para verificar a versão do seu servidor web, utilize o seguinte comando:

apache2 -v
Linux: Habilitar o HTTP/2 no Apache do Ubuntu

Habilitar o HTTP/2 em um host virtual do Apache

Iremos inicialmente verificar que o nosso webserver está disponibilizando o conteúdo através do HTTP/1.1. Você pode fazer isso no Google Chrome, abrindo a área de desenvolvedor utilizando ++I. Clique na tab Network (Rede) e localize a coluna Protocol (Protocolo).
Linux: Habilitar o HTTP/2 no Apache do Ubuntu
Para habilitar o módulo HTTP/2 no seu Ubuntu, utilize o seguinte comando:

sudo a2enmod http2
Linux: Habilitar o HTTP/2 no Apache do Ubuntu
Agora, devemos editar o arquivo de configuração SSL do host virtual no Apache, que foi criado quando você ativou o SSL utilizando o Let´s Encrypt, sendo que o nome do novo arquivo possui um sufixo "le-ssl.conf":

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

Insira a seguinte configuração após a tag: "Protocols h2 http/1.1"
Linux: Habilitar o HTTP/2 no Apache do Ubuntu
Salve as alterações e reinicie o serviço do Apache.

sudo systemctl restart apache

Para testar se o HTTP/2 está ativado, utilize o comando curl da seguinte forma:

curl -I --http2 -s https://domain.com/ | grep HTTP

Verifique no exemplo abaixo, recebi um retorno HTTP/2.

curl -I --http2 -s https://localhost/ | grep HTTP
HTTP/2 200

Ao realizar um novo teste utilizando o navegador web, na coluna Protocol (protocolo) você deve enxergar h2, ao invés de HTTP/1.1 que era mostrado anteriormente.
Linux: Habilitar o HTTP/2 no Apache do Ubuntu
Devemos então habilitar o módulo no Apache:

sudo a2enmod http2
sudo systemctl restart apache2

Conclusões

Você já utilizada o HTTP/2? O que acha da nova versão do protocolo?

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Instalar o MongoDB no Ubuntu

Listando os serviços Linux com o Systemctl

Criar RAID no Linux

Bodhi Linux 6.0

Taskwarrior, o Guerreiro das Tarefas - Gerenciar sua Lista TODO no Terminal

Leitura recomendada

Pós-instalação do Ubuntu Gnome 13.04

Funtoo + bspwm + Polybar + Rofi - Instalação e Configuração

Configuração inicial no FreeBSD 8.0-Release

Configurando o CACIC (parte 1)

Tint2 - Split TaskBar com Dual Monitor

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts