Pular para conteúdo

HTTPS com Nginx + Certbot (Ubuntu)

Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-07-06

Este guia configura HTTPS para dois apps Micronaut no mesmo servidor Ubuntu, usando Nginx como proxy reverso e Let's Encrypt (Certbot).

Aplicação Domínio Porta (backend)
Sul Plata sulplata.integracao.xadm.com.br 3001
Onpetro Trading onpetrotrading.integracao.xadm.com.br 3002

1. DNS (Zona do domínio)

No painel onde está a DNS Zone de xadm.com.br (ou onde integracao.xadm.com.br é gerenciado), crie os registros antes de instalar certificados, para o Certbot conseguir validar o domínio.

Registros necessários

Apontar ambos os subdomínios para o IP do servidor Ubuntu onde Nginx e os apps rodam.

Tipo Nome / Host Valor / Conteúdo TTL (opcional)
A sulplata.integracao IP_DO_SERVIDOR 300 ou padrão
A onpetrotrading.integracao IP_DO_SERVIDOR 300 ou padrão
  • Nome exato depende do provedor:
  • Se a zona for xadm.com.br: use sulplata.integracao e onpetrotrading.integracao
  • Valor: mesmo IP para os dois (o servidor Ubuntu).
  • Aguarde a propagação (alguns minutos; em alguns casos até 48h). Teste com:
    ping sulplata.integracao.xadm.com.br
    ping onpetrotrading.integracao.xadm.com.br
    

2. Servidor Ubuntu: instalar Nginx e Certbot

sudo apt update
sudo apt install -y nginx certbot python3-certbot-nginx
sudo systemctl enable nginx
sudo systemctl start nginx

3. Configurar Nginx (proxy para as duas aplicações)

Crie um arquivo de configuração, por exemplo /etc/nginx/sites-available/integrador:

# Sul Plata - porta 3001
server {
    listen 80;
    server_name sulplata.integracao.xadm.com.br;

    location / {
        proxy_pass http://127.0.0.1:3001;
        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;
    }
}

# Onpetro Trading - porta 3002
server {
    listen 80;
    server_name onpetrotrading.integracao.xadm.com.br;

    location / {
        proxy_pass http://127.0.0.1:3002;
        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;
    }
}

Ativar o site e testar:

sudo ln -sf /etc/nginx/sites-available/integrador /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Confirme que as duas aplicações Micronaut estão rodando nas portas 3001 (Sul Plata) e 3002 (Onpetro Trading) e que o firewall libera as portas 80 e 443 (e, se necessário, 3001/3002 só em localhost).


4. Obter certificados SSL (Certbot)

Com o DNS já apontando para o servidor e o Nginx respondendo em HTTP na porta 80:

sudo certbot --nginx -d sulplata.integracao.xadm.com.br -d onpetrotrading.integracao.xadm.com.br
  • O Certbot pergunta e-mail para avisos de renovação e termos de uso.
  • Ele altera automaticamente os blocos server no Nginx (adiciona listen 443 ssl, caminhos do certificado e redirect HTTP → HTTPS).

Ou certificados separados por domínio:

sudo certbot --nginx -d sulplata.integracao.xadm.com.br
sudo certbot --nginx -d onpetrotrading.integracao.xadm.com.br

Após isso, recarregue o Nginx se o Certbot não fizer isso sozinho:

sudo nginx -t
sudo systemctl reload nginx

5. Renovação automática

O Certbot agenda um cron/systemd timer para renovar os certificados. Verifique:

sudo systemctl status certbot.timer
sudo certbot renew --dry-run

6. Aplicações Micronaut

  • As duas apps continuam em HTTP nas portas 3001 e 3002.
  • Não é necessário configurar SSL no application.yml; o Nginx faz a terminação TLS.
  • Os headers X-Forwarded-Proto e Host já são enviados pelo proxy; o Micronaut pode usá-los se precisar gerar URLs HTTPS (ex.: links, redirects).

Atualize as URLs do OpenAPI/Swagger em cada app para os domínios em produção, por exemplo: - Sul Plata: https://sulplata.integracao.xadm.com.br - Onpetro Trading: https://onpetrotrading.integracao.xadm.com.br


Resumo

Etapa Ação
DNS Criar registros A para sulplata.integracao e onpetrotrading.integracao com o IP do servidor
Servidor Instalar Nginx e Certbot
Nginx Configurar dois server (porta 80) com proxy_pass para 3001 e 3002
Certbot Rodar certbot --nginx -d ... para os dois domínios
Apps Manter Sul Plata na 3001 e Onpetro Trading na 3002 em HTTP

URLs finais: - https://sulplata.integracao.xadm.com.br → app Sul Plata (3001) - https://onpetrotrading.integracao.xadm.com.br → app Onpetro Trading (3002)