# /etc/nginx/conf.d/recreahub-api.conf
# AlmaLinux 9 / Rocky Linux 9 / RHEL 9
# Gerado pelo setup-universal.sh — RecreaHUB

upstream recreahub_api {
    server 127.0.0.1:3000;
    keepalive 64;
}

server {
    listen      80;
    listen      [::]:80;
    server_name api.recreahub.com.br;

    # Redirecionar tudo para HTTPS após obter o certificado
    # (descomente após rodar certbot)
    # return 301 https://$host$request_uri;

    client_max_body_size 10m;

    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_types
        application/json
        application/javascript
        application/x-javascript
        text/plain text/css text/xml text/javascript
        image/svg+xml;

    location /health {
        proxy_pass http://recreahub_api;
        access_log off;
    }

    location / {
        proxy_pass         http://recreahub_api;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade    $http_upgrade;
        proxy_set_header   Connection 'upgrade';
        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_cache_bypass $http_upgrade;
        proxy_read_timeout    120s;
        proxy_connect_timeout  10s;
        proxy_send_timeout     60s;
    }
}

# HTTPS — descomentar após: certbot --nginx -d api.recreahub.com.br
#server {
#    listen      443 ssl http2;
#    listen      [::]:443 ssl http2;
#    server_name api.recreahub.com.br;
#
#    ssl_certificate     /etc/letsencrypt/live/api.recreahub.com.br/fullchain.pem;
#    ssl_certificate_key /etc/letsencrypt/live/api.recreahub.com.br/privkey.pem;
#    include             /etc/letsencrypt/options-ssl-nginx.conf;
#    ssl_dhparam         /etc/letsencrypt/ssl-dhparams.pem;
#
#    # TLS 1.2 + 1.3 apenas (AlmaLinux 9 suporta TLS 1.3 nativamente)
#    ssl_protocols TLSv1.2 TLSv1.3;
#    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
#    ssl_prefer_server_ciphers off;
#    ssl_session_cache   shared:SSL:10m;
#    ssl_session_timeout 1d;
#    ssl_stapling        on;
#    ssl_stapling_verify on;
#
#    # Cabeçalhos de segurança
#    add_header X-Frame-Options           "SAMEORIGIN"            always;
#    add_header X-Content-Type-Options    "nosniff"               always;
#    add_header X-XSS-Protection          "1; mode=block"         always;
#    add_header Referrer-Policy           "strict-origin-when-cross-origin" always;
#    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
#
#    client_max_body_size 10m;
#
#    gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6;
#    gzip_types application/json application/javascript text/plain text/css;
#
#    location /health { proxy_pass http://recreahub_api; access_log off; }
#
#    location / {
#        proxy_pass         http://recreahub_api;
#        proxy_http_version 1.1;
#        proxy_set_header   Upgrade $http_upgrade;
#        proxy_set_header   Connection 'upgrade';
#        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_cache_bypass $http_upgrade;
#        proxy_read_timeout 120s;
#    }
#}
