# Tier-1 API hub: one nginx listener; path-based routes to internal Phoenix + dbis_core. # Upstreams = loopback on same LXC after you colocate processes, or LAN IPs during migration. # # Adjust upstream addresses/ports to match ALL_VMIDS_ENDPOINTS / your compose layout. upstream sankofa_phoenix_graphql { server 127.0.0.1:4000; keepalive 32; } upstream dbis_core_rest { server 127.0.0.1:3000; keepalive 32; } server { listen 8080; server_name _; # Optional: restrict to NPM / LAN source IPs # allow 192.168.11.0/24; # deny all; location = /health { default_type application/json; return 200 '{"status":"hub-up"}'; } location /graphql { proxy_http_version 1.1; 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 300s; proxy_pass http://sankofa_phoenix_graphql; } location /graphql-ws { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Accept-Encoding ""; proxy_buffering off; 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 3600s; proxy_pass http://sankofa_phoenix_graphql; } location /api/ { proxy_http_version 1.1; 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_pass http://dbis_core_rest; } location /api-docs { proxy_pass http://dbis_core_rest; } }