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.
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.
apt update && apt install -y nginx certbot python3-certbot-nginx
ufw allow 80/tcp
ufw allow 443/tcp
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.
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
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.
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.
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.
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.
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.