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.integracaoeonpetrotrading.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
serverno Nginx (adicionalisten 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-ProtoeHostjá 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)