# nginx DO HOST no servidor BVIP — termina TLS e repassa para a pilha Docker.
#
# Instalar como /etc/nginx/sites-available/homologacao e ligar com:
#     ln -s /etc/nginx/sites-available/homologacao /etc/nginx/sites-enabled/
#     nginx -t && systemctl reload nginx
#
# O certificado sai do certbot:
#     certbot --nginx -d homolog.SEU-DOMINIO.com.br
#
# Divisão de responsabilidade: este arquivo cuida de TLS, autenticação e de
# manter a homologação fora dos buscadores. Toda a proteção de caminho — PHP em
# diretório de upload, .txt/.log/.sql soltos na raiz, phpinfo, dotfiles — mora
# no nginx DE DENTRO do container (docker/nginx/default.conf), que é o mesmo
# arquivo em desenvolvimento e o modelo para produção. Não duplique aquelas
# regras aqui: duas cópias divergem, e a de dentro é a que vale.

server {
    listen 80;
    server_name homolog.SEU-DOMINIO.com.br;

    # O certbot substitui este bloco por um redirecionamento para 443.
    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    http2 on;
    server_name homolog.SEU-DOMINIO.com.br;

    # ssl_certificate e ssl_certificate_key são preenchidos pelo certbot.

    # Homologação carrega dados anonimizados, mas anonimizado não é público:
    # a base preserva estado, cidade, valores e datas reais, e o conjunto todo
    # descreve a operação da franquia. Senha na frente.
    #
    #     apt install apache2-utils
    #     htpasswd -c /etc/nginx/.htpasswd-homolog SEU-USUARIO
    auth_basic           "Homologacao Barbearia VIP";
    auth_basic_user_file /etc/nginx/.htpasswd-homolog;

    # Nunca indexar. Sem isto, um relatório de homologação aparece no Google.
    add_header X-Robots-Tag "noindex, nofollow, noarchive" always;

    # Precisa acompanhar o client_max_body_size do container: o menor valor
    # vence, e o erro 413 apareceria aqui, longe de onde se procuraria.
    client_max_body_size 64M;

    location / {
        proxy_pass http://127.0.0.1:8080;

        proxy_set_header Host              $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        # Sem este cabeçalho o PHP enxerga a requisição como http e qualquer
        # URL absoluta gerada pelo sistema sai com o esquema errado.
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host  $host;

        # Espelha o fastcgi_read_timeout do container: relatórios pesados e
        # crons chamados por URL passam de 60 s, e o padrão do proxy cortaria
        # a resposta com 504 antes de o PHP terminar.
        proxy_read_timeout 300;
        proxy_connect_timeout 30;
    }
}
