# 开发服无域名时使用的 HTTP 入口,只允许用于 DEPLOY_TARGET=development。 # 没有域名时,将 SERVER_NAME 填为开发机 IP 或临时主机名。 # 生产 release 仍必须使用 genarrative.conf 的 HTTPS 配置。 server { listen 80; server_name genarrative.example.com; root /srv/genarrative/web; index index.html; include /etc/nginx/snippets/genarrative-maintenance.conf; location ^~ /admin/api/ { default_type application/json; if ($genarrative_maintenance) { return 503 '{"ok":false,"error":{"code":"MAINTENANCE","message":"服务维护中"}}'; } proxy_pass http://127.0.0.1:8082/admin/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_set_header X-Request-Id $request_id; } location = /admin { return 301 /admin/; } location ^~ /admin/assets/ { try_files $uri =404; } location ^~ /admin/ { error_page 503 /maintenance.html; if ($genarrative_maintenance) { return 503; } try_files $uri $uri/ /admin/index.html; } location ^~ /assets/ { try_files $uri =404; } # 开发服也不恢复旧一体化 API、生成资源代理和健康检查公网入口。 location ~ ^/(api|generated-|healthz) { return 404; } # 仅开放前端 SpacetimeDB SDK 运行所需的最小公网路由。 location ~ ^/v1/database/[^/]+/subscribe$ { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $host; proxy_read_timeout 3600s; } location ^~ /v1/identity { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $host; } location ^~ /v1/ { return 404; } location / { error_page 503 /maintenance.html; if ($genarrative_maintenance) { return 503; } try_files $uri $uri/ /index.html; } }