15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
01.11.2024

Como Instalar Nginx com Suporte HTTP/2 no Ubuntu (Guia Completo)

Nginx é um dos servidores web mais amplamente implementados do mundo, celebrado pelo seu desempenho excepcional, baixo consumo de memória e capacidade de lidar com milhares de conexões simultâneas. Quando combinado com HTTP/2, Nginx torna-se uma plataforma ainda mais poderosa — permitindo requisições multiplexadas, compressão de cabeçalhos, server push e tempos de carregamento de página dramaticamente reduzidos.

Este guia abrangente o orienta em cada etapa necessária para instalar Nginx com suporte completo a HTTP/2 em Ubuntu 20.04 e Ubuntu 22.04 LTS, desde a configuração inicial até a configuração SSL, otimização de blocos de servidor e verificação ao vivo.

> Para quem é este guia? Administradores de sistemas, desenvolvedores e proprietários de sites que desejam maximizar o desempenho da web em um servidor Linux. Se você está executando seu site em um plano de VPS Hosting ou um Servidor Dedicado, este tutorial se aplica diretamente ao seu ambiente.

Índice

  1. O que é HTTP/2 e por que é importante?
  2. Pré-requisitos
  3. Passo 1 — Atualizar o Índice de Pacotes do Sistema
  4. Passo 2 — Instalar Nginx
  5. Passo 3 — Instalar OpenSSL
  6. Passo 4 — Obter um Certificado SSL Gratuito com Let’s Encrypt
  7. Passo 5 — Configurar Nginx para HTTP/2
  8. Passo 6 — Otimizar sua Configuração Nginx HTTP/2
  9. Passo 7 — Testar a Configuração Nginx
  10. Passo 8 — Reiniciar Nginx e Aplicar Alterações
  11. Passo 9 — Verificar se HTTP/2 Está Ativo
  12. Resolução de Problemas Comuns
  13. Conclusão

O que é HTTP/2 e por que é importante?

HTTP/2 é a segunda versão principal do Hypertext Transfer Protocol, padronizada em RFC 7540. Foi projetada para resolver as limitações de desempenho do HTTP/1.1, que está em uso desde 1997.

Principais vantagens do HTTP/2 sobre HTTP/1.1:

RecursoHTTP/1.1HTTP/2
MultiplexingUma requisição por conexãoMúltiplas requisições simultâneas
Compressão de cabeçalhoCabeçalhos em texto simplesCompressão HPACK
Server pushNão suportadoSuportado
Protocolo binárioBaseado em textoFraming binário
Reutilização de conexãoLimitadaTotalmente persistente
LatênciaMaiorSignificativamente reduzida

Para proprietários de sites, ativar HTTP/2 se traduz diretamente em carregamentos de página mais rápidos, melhores pontuações de Core Web Vitals e rankings de SEO melhorados — já que o Google usa a velocidade da página como sinal de classificação.

> Importante: HTTP/2 requer HTTPS (TLS/SSL). Você não pode executar HTTP/2 em uma conexão não criptografada em nenhum navegador moderno. É por isso que obter um certificado SSL é uma etapa obrigatória neste guia. Se você precisar de um certificado confiável para seu domínio, AlexHost oferece Certificados SSL para todos os casos de uso.

Pré-requisitos

Antes de começar, certifique-se de ter o seguinte em vigor:

  • Um servidor executando Ubuntu 20.04 LTS ou Ubuntu 22.04 LTS (os passos são quase idênticos para ambos)
  • Um usuário não-root com sudo privilégios ou acesso direto root
  • Um nome de domínio registrado apontado para o endereço IP do seu servidor via um registro A
  • Portas 80 e 443 abertas no seu firewall (UFW ou iptables)
  • Familiaridade básica com a linha de comando Linux

Se você ainda não tem um domínio, pode registrar um diretamente através do Registro de Domínios AlexHost e apontá-lo para seu servidor em minutos.

Passo 1 — Atualizar o Índice de Pacotes do Sistema

Sempre comece atualizando seu índice de pacotes para garantir que você está instalando as versões mais recentes disponíveis de todo o software:

sudo apt update && sudo apt upgrade -y

Este comando atualiza a lista de pacotes local e atualiza qualquer pacote desatualizado já instalado no seu sistema.

Passo 2 — Instalar Nginx

Instalar o Pacote Nginx

Os repositórios padrão do Ubuntu incluem uma versão estável do Nginx. Instale-o com:

sudo apt install nginx -y

Iniciar o Serviço Nginx

Uma vez instalado, inicie o serviço Nginx imediatamente:

sudo systemctl start nginx

Ativar Nginx para Iniciar Automaticamente na Inicialização

Garanta que Nginx seja iniciado automaticamente toda vez que o servidor reiniciar:

sudo systemctl enable nginx

Verificar se Nginx Está Executando

Confirme que o serviço está ativo e em execução:

sudo systemctl status nginx

Você deve ver uma saída semelhante a:

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since ...

Permitir Nginx Através do Firewall

Se UFW está ativo no seu servidor, permita tráfego HTTP e HTTPS:

sudo ufw allow 'Nginx Full'
sudo ufw status

Nginx Full abre tanto a porta 80 (HTTP) quanto a porta 443 (HTTPS), ambas necessárias para esta configuração.

Passo 3 — Instalar OpenSSL

HTTP/2 depende de TLS, que por sua vez depende de OpenSSL. Instale-o para garantir que todas as dependências criptográficas estejam disponíveis:

sudo apt install openssl -y

Verifique a versão instalada:

openssl version

Você deve ver uma saída como OpenSSL 3.0.x ou similar. Qualquer versão acima de 1.0.2 suporta totalmente os cipher suites necessários para HTTP/2.

Passo 4 — Obter um Certificado SSL Gratuito com Let’s Encrypt

Let’s Encrypt fornece certificados SSL/TLS gratuitos e automaticamente renováveis confiáveis por todos os navegadores principais. O cliente Certbot torna todo o processo direto.

Instalar Certbot e o Plugin Nginx

sudo apt install certbot python3-certbot-nginx -y

Solicitar seu Certificado SSL

Substitua your_domain.com pelo seu nome de domínio registrado real:

sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Certbot irá:

  1. Verificar a propriedade do domínio via um desafio HTTP
  2. Emitir o certificado do Let’s Encrypt
  3. Modificar automaticamente sua configuração Nginx para usar o certificado
  4. Configurar redirecionamentos HTTPS a partir de HTTP

Siga os prompts interativos. Quando perguntado se deve redirecionar tráfego HTTP para HTTPS, selecione opção 2 (Redirecionar) — esta é a escolha recomendada.

Verificar Renovação Automática de Certificado

Os certificados Let’s Encrypt expiram após 90 dias. Certbot instala um trabalho cron ou temporizador systemd para renová-los automaticamente. Teste o processo de renovação com uma execução seca:

sudo certbot renew --dry-run

Se nenhum erro aparecer, a renovação automática está configurada corretamente.

> Dica: Para ambientes de produção com múltiplos domínios ou certificados wildcard, considere um Servidor Dedicado para controle completo sobre sua infraestrutura SSL.

Passo 5 — Configurar Nginx para HTTP/2

Agora que SSL está em vigor, você precisa ativar explicitamente HTTP/2 na configuração do bloco de servidor Nginx.

Abrir o Arquivo de Configuração Nginx

A configuração do site padrão está localizada em:

sudo nano /etc/nginx/sites-available/default

Se você criou um bloco de servidor personalizado para seu domínio (recomendado), abra esse arquivo em vez disso:

sudo nano /etc/nginx/sites-available/your_domain.com

Atualizar o Bloco de Servidor para Ativar HTTP/2

Localize a diretiva listen 443 ssl;. Certbot terá adicionado isso automaticamente. Modifique-a para incluir http2:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name your_domain.com www.your_domain.com;

    # SSL Certificate paths (set by Certbot)
    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    root /var/www/your_domain.com/html;
    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }
}

# HTTP to HTTPS redirect block
server {
    listen 80;
    listen [::]:80;
    server_name your_domain.com www.your_domain.com;
    return 301 https://$host$request_uri;
}

A mudança crítica está na linha listen: adicionar http2 após ssl ativa o protocolo HTTP/2 para esse host virtual.

Salvar e Sair

Pressione CTRL + X, depois Y, depois Enter para salvar o arquivo e sair do editor nano.

Passo 6 — Otimizar sua Configuração Nginx HTTP/2

Simplesmente ativar HTTP/2 é um bom começo, mas aplicar otimizações adicionais garante que você extraia o máximo desempenho de sua configuração.

Configurações de SSL e Desempenho Recomendadas

Adicione ou verifique as seguintes diretivas dentro do seu bloco server:

# Modern TLS protocols only
ssl_protocols TLSv1.2 TLSv1.3;

# Strong cipher suites compatible with HTTP/2
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;

# SSL session caching for performance
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;

# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

# HTTP Strict Transport Security (HSTS)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

# Additional security headers
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

# Gzip compression (complements HTTP/2)
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;

> Nota sobre HTTP/2 e Gzip: HTTP/2 usa sua própria compressão de cabeçalho HPACK, mas ativar Gzip para corpos de resposta ainda fornece economias significativas de largura de banda para ativos baseados em texto.

Passo 7 — Testar a Configuração Nginx

Nunca reinicie Nginx sem primeiro testar a configuração quanto a erros de sintaxe. Um arquivo mal configurado pode derrubar todo o seu servidor web.

Execute o teste de configuração integrado:

sudo nginx -t

Um teste bem-sucedido produz:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Se você ver algum erro, revise a saída cuidadosamente. A mensagem de erro incluirá o nome do arquivo e o número da linha onde o problema foi detectado.

Passo 8 — Reiniciar Nginx e Aplicar Alterações

Uma vez que o teste de configuração passa, reinicie Nginx para aplicar todas as alterações:

sudo systemctl restart nginx

Alternativamente, se você preferir um recarregamento de tempo zero (que aplica alterações de configuração sem descartar conexões ativas):

sudo systemctl reload nginx

Para ativação de HTTP/2 especificamente, um reinício completo é recomendado para garantir que as novas configurações de protocolo sejam totalmente inicializadas.

Passo 9 — Verificar se HTTP/2 Está Ativo

Após reiniciar Nginx, confirme que HTTP/2 está realmente sendo servido aos clientes usando um dos seguintes métodos.

Método 1: Usando curl

A ferramenta de linha de comando curl pode relatar a versão do protocolo usada:

curl -I --http2 https://your_domain.com

Procure pelo cabeçalho de resposta:

HTTP/2 200

Se você vir HTTP/2 200, HTTP/2 está funcionando corretamente.

Método 2: Usando o Comando OpenSSL

openssl s_client -connect your_domain.com:443 -alpn h2

Na saída, procure por:

ALPN protocol: h2

h2 é o identificador ALPN para HTTP/2. Se você vir isso, seu servidor está anunciando corretamente o suporte a HTTP/2 durante o handshake TLS.

Método 3: Usando Ferramentas de Desenvolvedor do Navegador

  1. Abra seu site em Google Chrome ou Mozilla Firefox
  2. Pressione F12 para abrir Ferramentas de Desenvolvedor
  3. Navegue até a aba Rede
  4. Recarregue a página (F5 ou Ctrl+R)
  5. Clique com o botão direito em qualquer cabeçalho de coluna na lista de requisições e ative a coluna Protocolo
  6. Você deve ver h2 listado como o protocolo para as requisições do seu domínio

Método 4: Usando uma Ferramenta Online de Teste HTTP/2

Visite https://tools.keycdn.com/http2-test e insira seu domínio. A ferramenta confirmará se HTTP/2 está ativo e fornecerá detalhes adicionais sobre a configuração TLS do seu servidor.

Resolução de Problemas Comuns

HTTP/2 Não Aparecendo no Navegador Apesar da Configuração

  • Causa: Navegador armazenou em cache uma conexão HTTP/1.1 mais antiga.
  • Solução: Limpe o cache e cookies do navegador, ou teste em uma janela privada/incógnita.

nginx -t Retorna Erros de Certificado SSL

  • Causa: Caminhos de certificado incorretos no arquivo de configuração.
  • Solução: Verifique os caminhos exatos usando sudo ls /etc/letsencrypt/live/your_domain.com/ e atualize as diretivas ssl_certificate e ssl_certificate_key de acordo.

Porta 443 Não Acessível

  • Causa: Firewall bloqueando tráfego HTTPS.
  • Solução: Execute sudo ufw allow 443/tcp e verifique com sudo ufw status.

Certbot Falha na Validação de Domínio

  • Causa: Registro A de DNS ainda não propagado, ou porta 80 está bloqueada.
  • Solução: Verifique se seu domínio resolve para o IP correto usando dig your_domain.com A. Garanta que a porta 80 está aberta para o desafio HTTP ACME.

Erro unknown directive "http2" no Nginx

  • Causa: Versão Nginx muito antiga (anterior a 1.9.5) ou compilada sem suporte a
15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar