Introdução
As notas de lançamento do Debian 9 (Stretch) anunciaram uma grande atualização interessante entre as outras: Apache 2.4.25.
Mas por que “interessante”? Principalmente porque foi a primeira versão contendo um pacote Apache> = 2.4.17, a versão dinâmica que apresenta suporte a HTTP / 2 ( SPDY ), com mod_http2
.
Se você ainda está se perguntando se seus servidores web ou proxies reversos devem oferecer esse protocolo, convido você a ler este famoso FAQ .
Dica profissional: você já se perguntou por que o Google ou o YouTube são tão rápidos?
No final deste post, você terá (espero) um Apache rodando com HTTP/2 habilitado.
Procedimento de configuração
Um novo módulo, uma nova configuração
Antes de mais nada, vamos verificar se você está executando uma versão decente do Apache para HTTP/2:
# apache2ctl -v
Precisa mostrar para você uma versão superior a esta: (Caso seja inferior, por favor, atualize seu Apache ou não vai funcionar!)
Server version: Apache/2.4.25 (Debian)
Agora, vamos habilitar o mod_http2
módulo apresentado acima:
# a2enmod http2
Antes de reiniciar o Apache (como a saída do comando acaba de avisá-lo), indicaremos o uso do novo protocolo por meio da configuração (como bons administradores de sistema, preservaremos a modularidade):
# nano /etc/apache2/conf-available/http2.conf
… E copie e cole esta configuração em seu vHost:
Se você tiver dúvida em como configurar seu vHost, leia este artigo que preparamos para você e apenas acrescente a informação acima no seu vHost abaixo de <VirtualHost *:443> no seu arquivo.conf.
E aqui, só precisamos habilitar nossa nova configuração:
# a2enconf http2
Dica profissional: a configuração acima habilitaria HTTP/2 globalmente .
Se você quiser habilitá-lo apenas para um VHOST específico, cole a configuração acima diretamente dentro dele!
Dica profissional 2:
h2
é para HTTP / 2 sobre TLS & ALPN, eh2c
é para negociação HTTP / 2 de texto não criptografado (normalmente você não vai precisar, mas quem sabe? Já deixa preparado).
Então, agora, você já poderia reiniciar seu servidor web ( # systemctl restart apache2
) e verificar os resultados, mas não o faremos agora pelo seguinte motivo: O módulo mpm (prefork.c) não é compatível com mod_http2. O mpm determina como as coisas são processadas em seu servidor. HTTP/2 tem mais demandas a esse respeito e o mpm selecionado atualmente simplesmente não servirá. Este é um aviso informativo. Seu servidor continuará a funcionar, mas o protocolo HTTP/2 ficará inativo.
O problema do MPM
O Apache 2.4 funciona por padrão com o módulo prefork MPM, que significa Multi-Processing Module prefork module. E adivinha? O MPM não é compatível com HTTP/2.
Então, como realmente queremos oferecer HTTP/2, usaremos o interpretador FPM do PHP (que significa FastCGI Process Manager ) que é … compatível com HTTP/2!
A “solução” FPM
Abaixo está a receita a seguir (veja as fontes no final da postagem):
- Instale o pacote FPM do PHP (presumo aqui que você manteve a versão oficial do Stretch PHP ): Então primeiro veja qual é a versão seu PHP utilizando. o seguinte comando:
# php-v
caso seja por exemplo a versão 7.4-* então você vai digitar# apt install php7.4-fpm
- Habilite alguns módulos obrigatórios:
# a2enmod proxy_fcgi setenvif
- Ative a nova configuração FPM do PHP:
# a2enconf php7.4-fpm
- Desative os módulos antigos que não serão mais usados:
# a2dismod php7.4 mpm_prefork
- Ative o módulo MPM
event
, em substituição aprefork
:# a2enmod mpm_event
Agora sim recomendo você pode reiniciar seu servidor web com maior certeza que funcionará.
# systemctl restart apache2
Hora de verificação!
Nesta etapa, presumo que você aplicou a configuração HTTP/2 acima e reiniciou corretamente o Apache!
curl
Consultas básicas
Com um curl
, presumindo que tenha sido compilado com o módulo HTTP/2, é claro, você pode facilmente verificar se o HTTP/2 está sendo (ou será) usado:
$ curl -v https://www.seudominio.com.br/
Apenas observe a versão HTTP escrita junto com verbos ou códigos de status.
Para um HTTPS VHOST, observe os pontos abaixo:
Afim de facilitar o seu entendimento abaixo eu destaquei em vermelho os pontos a serem observados se mostra em seu Putty, Terminal… seja lá o que for, SSH:
Também tem essa ferramenta muito útil e disponível para acessar de qualquer lugar que é: https://http2.pro/ permitindo que você verifique remotamente se o HTTP/2 está ativo e funcionando em seu domínio. Também é capaz de verificar se ALPN e PUSH estão rodando corretamente.
Clique no link e digite o seu domínio para um teste.
Deixe uma resposta
Você precisa fazer o login para publicar um comentário.