worker_processes 1;

events {
    worker_connections 1024;
}

http {
    include mime.types;
    default_type application/octet-stream;

    sendfile on;
    keepalive_timeout 65;

    # Redirect HTTP to HTTPS
    server {
        listen 80;
        server_name sales.globalerc.pt;
        return 301 https://$server_name$request_uri;
    }

    # HTTPS Server for sales.globalerc.pt
    server {
        listen 443 ssl http2;
        server_name sales.globalerc.pt;

        # SSL Certificates (from ZeroSSL - placed in C:\nginx\certs\)
        ssl_certificate C:/nginx/certs/certificate.crt;
        ssl_certificate_key C:/nginx/certs/private.key;

        # SSL Configuration
        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 on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;

        # Security Headers
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
        add_header X-Frame-Options "SAMEORIGIN" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-XSS-Protection "1; mode=block" always;

        # Gzip compression
        gzip on;
        gzip_types text/plain text/css text/xml text/javascript application/json application/javascript;

        # Proxy to Gunicorn running on localhost:8000
        location / {
            proxy_pass http://127.0.0.1:8000;
            
            # Headers
            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 $server_name;
            
            # Timeouts
            proxy_connect_timeout 60s;
            proxy_send_timeout 60s;
            proxy_read_timeout 60s;

            # Disable redirect rewriting
            proxy_redirect off;

            # WebSocket support (if needed in future)
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }

        # Static files (if using)
        location /static/ {
            proxy_pass http://127.0.0.1:8000;
            expires 30d;
            add_header Cache-Control "public, immutable";
        }
    }

    # Fallback for localhost (development)
    server {
        listen 80;
        server_name localhost 127.0.0.1;
        
        location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}
