events {
  worker_connections 1024;
}

http {
  # Upstream definitions
  upstream backend      { server backend:3001; }
  upstream vaas-backend { server vaas-backend:3002; }
  upstream frontend     { server frontend:8080; }
  upstream vaas-admin   { server vaas-admin:80; }
  upstream customer-portal { server customer-portal:80; }

  # Security headers applied globally
  add_header X-Frame-Options         DENY              always;
  add_header X-Content-Type-Options  nosniff           always;
  add_header Referrer-Policy         strict-origin      always;
  add_header Permissions-Policy      "camera=(), microphone=()" always;

  # Redirect all HTTP to HTTPS
  server {
    listen 80;
    server_name _;
    return 301 https://$host$request_uri;
  }

  # ─────────────────────────────────────────
  # Main domain: admin dashboard + core API
  # Replace api.yourdomain.com with your domain
  # ─────────────────────────────────────────
  server {
    listen 443 ssl http2;
    server_name api.yourdomain.com;

    ssl_certificate     /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    # Core API
    location /api/ {
      proxy_pass         http://backend;
      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_read_timeout 120s;
      client_max_body_size 15m;  # Allow document uploads up to 15 MB
    }

    # Admin dashboard (static)
    location / {
      proxy_pass http://frontend;
    }
  }

  # ─────────────────────────────────────────
  # VaaS subdomain
  # Replace vaas.yourdomain.com with your domain
  # ─────────────────────────────────────────
  server {
    listen 443 ssl http2;
    server_name vaas.yourdomain.com;

    ssl_certificate     /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location /api/ {
      proxy_pass         http://vaas-backend;
      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;
    }

    location / {
      proxy_pass http://vaas-admin;
    }
  }

  # ─────────────────────────────────────────
  # Customer portal subdomain
  # Replace portal.yourdomain.com with your domain
  # ─────────────────────────────────────────
  server {
    listen 443 ssl http2;
    server_name portal.yourdomain.com;

    ssl_certificate     /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
      proxy_pass http://customer-portal;
    }
  }
}
