Como Configurar o Nginx para HTTP e HTTPS?

Publicado 13 de outubro de 2024

Problema: Configurando o Nginx para HTTP e HTTPS

Configurar o Nginx para lidar com tráfego HTTP e HTTPS pode ser desafiador. Você precisa configurar o servidor para escutar em diferentes portas e gerenciar certificados SSL/TLS, além de configurar o redirecionamento correto entre os protocolos.

Solução: Modificando o Bloco do Servidor Nginx para Suporte a Ambos os Protocolos

Ajustando o Arquivo de Configuração do Nginx

Para permitir que o Nginx lide com tráfego HTTP e HTTPS, você precisa alterar a configuração do bloco do servidor. As principais mudanças envolvem:

  • Remover a diretiva 'ssl on': Essa diretiva força o SSL para todas as conexões, o que pode causar problemas com requisições HTTP.
  • Configurar diretivas de escuta separadas para HTTP e HTTPS: Isso permite que o servidor aceite conexões nas portas 80 (HTTP) e 443 (HTTPS).

Exemplo de um Bloco de Servidor Corrigido

Aqui está um exemplo de um bloco de servidor que suporta HTTP e HTTPS:

server {
    listen 80;
    listen 443 ssl;
    server_name exemplo.com;

    ssl_certificate /caminho/para/seu/certificado_ssl.crt;
    ssl_certificate_key /caminho/para/sua/chave_ssl.key;

    # Outras configurações SSL...

    root /var/www/seu_site;
    index index.html;

    # Outras configurações do servidor...
}

Nesta configuração:

  • A diretiva 'ssl on' é removida.
  • Duas diretivas 'listen' são usadas: uma para a porta 80 (HTTP) e outra para a porta 443 (HTTPS).
  • O parâmetro 'ssl' é adicionado à diretiva listen 443, habilitando SSL apenas para conexões HTTPS.
  • Os caminhos dos certificados SSL são especificados usando as diretivas ssl_certificate e ssl_certificate_key.

Essas mudanças permitem que o servidor lide corretamente com requisições HTTP e HTTPS, corrigindo o erro 400 para requisições HTTP.

Dica: Teste Sua Configuração

Após fazer alterações na configuração do Nginx, sempre teste antes de reiniciar o servidor. Use o comando nginx -t para verificar erros de sintaxe e possíveis problemas. Isso ajuda a evitar erros de configuração que poderiam levar a tempo de inatividade do servidor.