# ==============================================
# Nginx Konfiguration fuer Unity WebGL
# ==============================================
# Optimiert fuer grosse WASM-Dateien und
# korrektes CORS fuer API-Aufrufe

server {
    listen 80;
    server_name localhost;
    root /usr/share/nginx/html;
    index index.html;

    # Standard MIME-Types einbinden + WebGL-spezifische hinzufuegen
    include /etc/nginx/mime.types;

    # WebGL-spezifische MIME-Types (zusaetzlich)
    types {
        application/wasm wasm;
    }

    # Gzip Kompression fuer grosse Dateien
    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_types
        application/javascript
        application/wasm
        application/json
        text/plain
        text/css
        text/html;
    gzip_min_length 1000;

    # Brotli-komprimierte Unity-Dateien (falls vorhanden)
    location ~ \.br$ {
        gzip off;
        add_header Content-Encoding br;
        default_type application/octet-stream;
    }

    # Gzip-komprimierte Unity-Dateien
    location ~ \.gz$ {
        gzip off;
        add_header Content-Encoding gzip;
        default_type application/octet-stream;
    }

    # Caching fuer statische Assets (1 Jahr)
    location ~* \.(data|wasm|js|css|png|jpg|gif|ico|svg|woff|woff2)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
        add_header Access-Control-Allow-Origin "*";
    }

    # Health-Check Endpunkt
    location = /health {
        default_type application/json;
        alias /usr/share/nginx/html/health.json;
    }

    location = /health.json {
        access_log off;
        default_type application/json;
    }

    # SPA Routing - alle Requests auf index.html
    location / {
        # CORS Headers
        add_header Access-Control-Allow-Origin "*" always;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
        add_header Access-Control-Allow-Headers "Content-Type, Authorization" always;

        try_files $uri $uri/ /index.html;
    }
}
