Principal / Guias / Nginx + SSL

Nginx proxy reverso com HTTPS automático

Um Nginx na frente de tudo: seu aplicativo Node, um API, um painel de painel, um painel de jogo. Adicione certificados Let's Encrypt gratuitos que se renovam e conectem WebSockets sem dor.

1. DNS primeiro

Criar um registo A: app.example.com → YOUR_SERVER_IP. Espere alguns minutos e verifique a partir do servidor:

getent hosts app.example.com

o certbot não emitirá um certificado até que o DNS aponte para o seu servidor.

2. Instale Nginx e abra o firewall

apt update && apt install -y nginx certbot python3-certbot-nginx
ufw allow 80/tcp
ufw allow 443/tcp

3. A configuração reversa do proxy

cat > /etc/nginx/sites-available/app <<'EOF'
server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 300s;
    }
}
EOF
ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/app
rm -f /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx

Os dois Upgrade linhas permitem WebSockets; o longo tempo de leitura mantém conexões lentas (SSE, pesquisas longas, painéis de jogos) de ser cortado em 60 segundos. Substituir 127.0.0.1:3000 com qualquer porta que seu aplicativo ouve.

4. HTTPS em um comando

certbot --nginx -d app.example.com --redirect -m [email protected] --agree-tos

certbot edita a configuração, adiciona o bloco 443, instala um temporizador de renovação e configura HTTP → HTTPS redirecionar. Verificar as obras de renovação:

certbot renew --dry-run
systemctl list-timers | grep certbot

5. Adicione mais serviços

Outra aplicação na porta 3001? Copiar o bloco do servidor, alterar server_name e proxy_pass, faz outra vez o certbot. Um Nginx pode manter dezenas de sites — um servidor de 6,5 € lida com eles facilmente.

Prefere ainda menos configuração? Caddy faz HTTPS com duas linhas — Nginx ganha quando você precisa de controle fino sobre cabeçalhos, caching e timeouts.

6. Quando algo quebra

nginx -t
tail -f /var/log/nginx/error.log
curl -I https://app.example.com

502 significa que Nginx está bem, mas seu aplicativo está para baixo ou na porta errada. 404 com uma página errada significa que outro bloco do site está pegando o pedido — cheque server_name.

Respostas rápidas

Preciso de um IP dedicado para HTTPS?

Para acesso padrão ao navegador — sim, você precisa de um plano com um IPv4 dedicado, porque o Let's Encrypt valida seu domínio na porta 80 ou 443. Os planos NAT com portos enviados trabalham para bots, túneis e VPNs, não para sites públicos.

Os certificados Let's Encrypt são realmente gratuitos?

Sim, e eles renovam automaticamente a cada 60 dias através do certbot timer systemd instala. Não há nenhum nível pago necessário para um local normal.

O Nginx pode proxy de Minecraft ou servidor de jogos?

Não é tráfego UDP — Nginx só fala HTTP. Jogos usam suas próprias portas, abri-los diretamente no firewall.

Obter um servidor com um IPv4 dedicado — Os planos começam em €6.5/mês.

Relacionado