Poupe 15% em todos os serviços de alojamento

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código: Skills Começar a trabalhar
Secções
Administração Linux Segurança

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.

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
MultiplexingUm pedido por conexãoMúltiplos pedidos simultâneos
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ênciaMais altaSignificativamente reduzida

Para proprietários de sites, ativar HTTP/2 se traduz diretamente em carregamento de página mais rápido, melhores pontuações de Core Web Vitals e rankings de SEO aprimorados — 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, a AlexHost oferece Certificados SSL para todos os casos de uso.

Pré-requisitos

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

  • Um servidor a executar Ubuntu 20.04 LTS ou Ubuntu 22.04 LTS (os passos são quase idênticos para ambos)
  • Um utilizador não-root com privilégios sudo ou acesso direto como root
  • Um nome de domínio registado apontado para o endereço IP do seu servidor através de um registo A
  • Portas 80 e 443 abertas na sua firewall (UFW ou iptables)
  • Familiaridade básica com a linha de comandos Linux

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

Passo 1 — Atualizar o Índice de Pacotes do Sistema

Comece sempre atualizando o índice de pacotes para garantir que está instalando as versões mais recentes 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 com:

sudo apt install nginx -y

Iniciar o Serviço Nginx

Após a instalação, inicie o serviço Nginx imediatamente:

sudo systemctl start nginx

Ativar Nginx para Iniciar Automaticamente no Boot

Certifique-se de que o Nginx é iniciado automaticamente sempre que o servidor reinicia:

sudo systemctl enable nginx

Verificar se o Nginx Está em Execução

Confirme se 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 da Firewall

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

sudo ufw allow 'Nginx Full'
sudo ufw status

Nginx Full abre ambas as portas 80 (HTTP) e 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 — Obtenha um Certificado SSL Gratuito com Let's Encrypt

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

Instale o Certbot e o Plugin Nginx

sudo apt install certbot python3-certbot-nginx -y

Solicite Seu Certificado SSL

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

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

O Certbot irá:

  1. Verificar a propriedade do domínio através de 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 do HTTP

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

Verifique a Renovação Automática do Certificado

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

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 do servidor Nginx.

Abrir o Arquivo de Configuração do 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:

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

Atualizar o Bloco do Servidor para Ativar HTTP/2

Localize a diretiva listen 443 ssl;. O 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 — Otimize 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 da sua configuração.

Configurações Recomendadas de SSL e Desempenho

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 do Nginx

Nunca reinicie o Nginx sem primeiro testar a configuração para 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 vir algum erro, revise cuidadosamente a saída. 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

Após o teste de configuração passar, reinicie o Nginx para aplicar todas as alterações:

sudo systemctl restart nginx

Alternativamente, se preferir um recarregamento sem tempo de inatividade (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 o Nginx, confirme que HTTP/2 está sendo servido aos clientes usando um dos seguintes métodos.

Método 1: Usando curl

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

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 isto, o seu servidor está a anunciar corretamente o suporte HTTP/2 durante o handshake TLS.

Método 3: Usando as Ferramentas de Programador do Navegador

  1. Abra o seu website no Google Chrome ou Mozilla Firefox
  2. Pressione F12 para abrir as Ferramentas de Programador
  3. Navegue até o separador Network
  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 pedidos e ative a coluna Protocol
  6. Deverá ver h2 listado como o protocolo para os pedidos do seu domínio

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

Visite https://tools.keycdn.com/http2-test e introduza o 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.
  • Correção: Limpe o cache e os 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.
  • Correção: Verifique os caminhos exatos usando sudo ls /etc/letsencrypt/live/your_domain.com/ e atualize as diretivas ssl_certificate e ssl_certificate_key accordingly.

Porta 443 Não Acessível

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

Certbot Falha na Validação de Domínio

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

Erro unknown directive "http2" no Nginx

  • Causa: Versão do Nginx é muito antiga (anterior a 1.9.5) ou foi compilada sem suporte HTTP/2.
  • Correção: Atualize o Nginx. No Ubuntu 20.04+, a versão do repositório padrão suporta HTTP/2. Você também pode adicionar o PPA oficial do Nginx: sudo add-apt-repository ppa:nginx/stable && sudo apt update && sudo apt upgrade nginx.

Conclusão

Instalou com sucesso o Nginx com suporte completo a HTTP/2 no Ubuntu. Aqui está um resumo de tudo o que foi realizado:

  • ✅ Instalou e ativou o Nginx como serviço do sistema
  • ✅ Obteve um certificado SSL gratuito e de renovação automática via Let’s Encrypt e Certbot
  • ✅ Configurou o bloco de servidor Nginx com a diretiva http2
  • ✅ Aplicou endurecimento de TLS, OCSP stapling, HSTS e compressão Gzip
  • ✅ Testou a configuração e verificou que HTTP/2 está ativo

Ativar HTTP/2 é uma das otimizações de maior impacto e menor esforço que pode fazer num servidor web. Combinado com configurações TLS fortes e cabeçalhos de cache adequados, melhora significativamente os tempos de carregamento de páginas, as pontuações de Core Web Vitals e, em última análise, o ranking do seu site nos motores de busca.

Mantenha a sua stack atualizada: Execute regularmente sudo apt update && sudo apt upgrade para manter o Nginx, OpenSSL e Certbot atualizados com os patches de segurança mais recentes.

Leve o Desempenho do Seu Servidor Mais Longe

Os ganhos de desempenho do HTTP/2 são mais pronunciados em infraestrutura rápida e confiável. Se está atualmente em hosting partilhado e a atingir limites de recursos, considere fazer upgrade para um plano de VPS Hosting para recursos dedicados e acesso root completo. Para aplicações de alto tráfego, Servidores Dedicados oferecem desempenho bruto incomparável. Também pode gerir facilmente o seu ambiente de servidor com um VPS com cPanel se preferir uma interface gráfica em vez da linha de comando.

Independentemente das suas necessidades de infraestrutura, a AlexHost fornece a plataforma para executar Nginx, HTTP/2 e toda a sua stack web com eficiência máxima.