events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; upstream django { server django:8701; } upstream fastapi { server fastapi:8702; } upstream timeline { server timeline:5173; } upstream minio { server minio:9000; } server { listen 80; server_name mpr.local.ar; # Django Admin location /admin { proxy_pass http://django; 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; } # Django static files location /static { proxy_pass http://django; proxy_set_header Host $host; } # FastAPI location /api/ { proxy_pass http://fastapi; 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; } # Timeline UI location /ui { proxy_pass http://timeline; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } # Vite HMR websocket location /@vite { proxy_pass http://timeline; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } # Media files - proxied from MinIO (local) or S3 (AWS) location /media/in/ { proxy_pass http://minio/mpr-media-in/; proxy_set_header Host $http_host; } location /media/out/ { proxy_pass http://minio/mpr-media-out/; proxy_set_header Host $http_host; } # Default to Timeline UI location / { proxy_pass http://timeline; proxy_set_header Host $host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } }