Configuração do Traefik com Nginx

Opção 1: Desabilitar configurações do nginx (Recomendado)

Execute na VPS:

# 1. Verificar quais configurações do nginx estão ativas
ls -la /etc/nginx/sites-enabled/

# 2. Verificar se há configurações para os domínios
grep -r "dockerapp.comunidadezdg.com.br" /etc/nginx/sites-enabled/
grep -r "dockerapi.comunidadezdg.com.br" /etc/nginx/sites-enabled/

# 3. Desabilitar as configurações antigas (se existirem)
sudo rm /etc/nginx/sites-enabled/zpro-frontend
sudo rm /etc/nginx/sites-enabled/zpro-backend

# 4. Testar configuração do nginx
sudo nginx -t

# 5. Recarregar nginx
sudo systemctl reload nginx

Opção 2: Configurar nginx para fazer proxy para Traefik

Se você quiser manter o nginx na porta 443 fazendo proxy para o Traefik:

# Criar configuração do nginx para fazer proxy para Traefik
sudo nano /etc/nginx/sites-available/zpro-traefik-proxy

OPÇÃO A: Gerar certificados via Certbot (Recomendado)

Primeiro, gere os certificados. Como a porta 80 está em uso pelo nginx, use uma das opções abaixo:

Método 1: Parar nginx temporariamente (Mais simples)

# Instalar certbot (se não tiver)
sudo apt update
sudo apt install certbot python3-certbot-nginx -y

# Parar nginx temporariamente
sudo systemctl stop nginx

# Gerar certificados para os domínios
sudo certbot certonly --standalone -d dockerapp.comunidadezdg.com.br -d dockerapi.comunidadezdg.com.br

# Reiniciar nginx
sudo systemctl start nginx

Método 2: Usar modo webroot (sem parar nginx)

# Instalar certbot (se não tiver)
sudo apt update
sudo apt install certbot python3-certbot-nginx -y

# Criar diretório para validação (se não existir)
sudo mkdir -p /var/www/html/.well-known/acme-challenge

# Garantir que nginx serve esse diretório (adicionar ao server block na porta 80)
# O nginx já deve estar configurado para servir arquivos estáticos

# Gerar certificados usando webroot
sudo certbot certonly --webroot -w /var/www/html -d dockerapp.comunidadezdg.com.br -d dockerapi.comunidadezdg.com.br

Método 3: Usar plugin do nginx (Mais automático)

# Instalar certbot (se não tiver)
sudo apt update
sudo apt install certbot python3-certbot-nginx -y

# Criar configuração básica do nginx na porta 80 primeiro (se não existir)
# O certbot vai modificar automaticamente

# Gerar certificados usando plugin do nginx
sudo certbot --nginx -d dockerapp.comunidadezdg.com.br -d dockerapi.comunidadezdg.com.br

Recomendação: Use o Método 1 (parar nginx temporariamente) - é o mais simples e rápido.

IMPORTANTE: Antes de criar a configuração, verifique se há conflitos de domínio:

# Verificar quais configurações estão ativas
sudo ls -la /etc/nginx/sites-enabled/

# Verificar se há configurações antigas para esses domínios
sudo grep -r "dockerapp.comunidadezdg.com.br" /etc/nginx/sites-enabled/
sudo grep -r "dockerapi.comunidadezdg.com.br" /etc/nginx/sites-enabled/

# Se houver configurações antigas para os mesmos domínios, você pode:
# 1. Desabilitá-las temporariamente: sudo rm /etc/nginx/sites-enabled/nome-antigo
# 2. Ou comentar os server blocks conflitantes dentro dos arquivos

Depois, crie o arquivo de configuração com um nome diferente (para não conflitar com configurações existentes):

sudo nano /etc/nginx/sites-available/zpro-traefik-proxy

Cole este conteúdo no arquivo:

# Frontend - dockerapp.comunidadezdg.com.br
server {
    listen 443 ssl http2;
    server_name dockerapp.comunidadezdg.com.br;

    # Certificados SSL gerados via certbot
    ssl_certificate /etc/letsencrypt/live/dockerapp.comunidadezdg.com.br/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/dockerapp.comunidadezdg.com.br/privkey.pem;

    # Configurações SSL
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass https://localhost:8443;
        proxy_ssl_verify off;  # Desabilita verificação SSL para o Traefik
        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 X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

# Backend - dockerapi.comunidadezdg.com.br
server {
    listen 443 ssl http2;
    server_name dockerapi.comunidadezdg.com.br;

    # Certificados SSL gerados via certbot (mesmo certificado, pois foram gerados juntos)
    ssl_certificate /etc/letsencrypt/live/dockerapp.comunidadezdg.com.br/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/dockerapp.comunidadezdg.com.br/privkey.pem;

    # Configurações SSL
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass https://localhost:8443;
        proxy_ssl_verify off;  # Desabilita verificação SSL para o Traefik
        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 X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

OPÇÃO B: Usar certificados auto-assinados temporários (apenas para teste)

Primeiro, gere certificados auto-assinados:

# Criar diretório para certificados
sudo mkdir -p /etc/nginx/ssl

# Gerar certificado auto-assinado para dockerapp
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \\
  -keyout /etc/nginx/ssl/dockerapp.key \\
  -out /etc/nginx/ssl/dockerapp.crt \\
  -subj "/CN=dockerapp.comunidadezdg.com.br"

# Gerar certificado auto-assinado para dockerapi
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \\
  -keyout /etc/nginx/ssl/dockerapi.key \\
  -out /etc/nginx/ssl/dockerapi.crt \\
  -subj "/CN=dockerapi.comunidadezdg.com.br"

Depois, use esta configuração:

# Frontend - dockerapp.comunidadezdg.com.br
server {
    listen 443 ssl http2;
    server_name dockerapp.comunidadezdg.com.br;

    # Certificados auto-assinados (temporários)
    ssl_certificate /etc/nginx/ssl/dockerapp.crt;
    ssl_certificate_key /etc/nginx/ssl/dockerapp.key;

    # Configurações SSL
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass https://localhost:8443;
        proxy_ssl_verify off;
        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 X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

# Backend - dockerapi.comunidadezdg.com.br
server {
    listen 443 ssl http2;
    server_name dockerapi.comunidadezdg.com.br;

    # Certificados auto-assinados (temporários)
    ssl_certificate /etc/nginx/ssl/dockerapi.crt;
    ssl_certificate_key /etc/nginx/ssl/dockerapi.key;

    # Configurações SSL
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass https://localhost:8443;
        proxy_ssl_verify off;
        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 X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Depois:

# Habilitar configuração
sudo ln -s /etc/nginx/sites-available/zpro-traefik-proxy /etc/nginx/sites-enabled/

# Testar
sudo nginx -t

# Recarregar
sudo systemctl reload nginx

Opção 3: Acessar diretamente o Traefik (sem nginx)

Se você quiser acessar diretamente o Traefik sem passar pelo nginx:

  1. Acesse via porta 8443:
    • https://dockerapp.comunidadezdg.com.br:8443
    • https://dockerapi.comunidadezdg.com.br:8443
  2. Ou configure o DNS para apontar diretamente para o Traefik (não recomendado se você já tem nginx rodando)

Verificação

Após aplicar uma das soluções:

# Verificar se o Traefik está rodando
docker ps | grep traefik

# Verificar logs do Traefik
docker logs zpro-traefik

# Testar acesso direto ao Traefik
curl -k https://localhost:8443 -H "Host: dockerapp.comunidadezdg.com.br"

Nota Importante

Se você escolher a Opção 1 (desabilitar nginx), certifique-se de que:

  • O Traefik está acessível na porta 8443
  • O firewall permite conexões na porta 8443
  • Os certificados SSL estão sendo gerados corretamente pelo Traefik

Se você escolher a Opção 2 (nginx como proxy), o nginx gerencia o SSL na porta 443 e faz proxy para o Traefik na 8443.

results matching ""

    No results matching ""