server {
    # O Nginx dentro do nosso container vai escutar na porta 80.
    listen 80;

    # Define a pasta raiz onde estão os arquivos do nosso frontend.
    # Corresponde à pasta para onde copiamos o /app/dist no Dockerfile.
    root /usr/share/nginx/html;
    index index.html index.htm;

    # Bloco para o redirecionamento da API (Proxy Reverso)
    location /api {
        # 'api' é o nome do nosso serviço de backend no docker-compose.yml.
        # O Docker cuida da resolução desse nome para o IP correto.
        proxy_pass http://api:8000;

        # Cabeçalhos importantes para que a API saiba quem é o cliente original.
        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;
    }

    # Bloco para servir o frontend e lidar com o roteamento do React.
    # Esta é a parte "mágica" para que rotas como /contatos funcionem
    # ao recarregar a página.
    location / {
        # Tenta encontrar o arquivo solicitado diretamente ($uri),
        # ou um diretório com esse nome ($uri/),
        # se não encontrar nenhum dos dois, ele serve o /index.html.
        # O React então assume o controle e exibe a página correta.
        try_files $uri $uri/ /index.html;
    }
}