c2c5e1ced5
- 发行包上限 100→200 MiB、展开总量 250→500 MiB,整包路由请求体上限继续从包上限派生;发行静态资源进程内缓存预算提到 256 MiB - 反代放行量同步放宽到 210 MiB:Nginx 三份模板的 client_max_body_size、Pingora 网关默认值与 env 样例、路由对照矩阵 - platform-oss 新增内部对象追加写 append_internal_object(_with_retry),以 OSS 返回的 next-append-position 作为权威已收字节 - api-server 新增 upload-state / chunk / complete / reset 四条分片路由,抽出共享收口 confirm_validated_package;偏移不符返回 409 与权威偏移,校验失败删除半包并落 upload_failed - AGC 新增原生上传器 game_package_upload.rs(内容寻址暂存、分片续传、受控重试、进度事件)与 prepare / upload 两条命令,退役整包回传命令 - 渲染进程改为 prepare → 创建游戏 → 创建版本 → 原生分片上传 → 送审,LocalProjectExportPackagePayload 整包类型退役 - 同时修正 live 用例无法指向本地栈的两处基础设施问题:平台基址按传入 URL 选择,桥接层把 jsdom realm 的 Headers / Blob / FormData 降级成 Node 原生值 - 测试:platform-oss 74、api-server game_distribution 23、AGC 原生 4、发布相关前端 20;live 用例补真实栈「中断 → 续传 → 确认」断言(分片偏移序列 [0, 8388608]) - 文档:玩法创作主规范的上传合同、运维与 Pingora 文档、决策记录、发行里程碑口径,以及新增的续传里程碑与实施计划
77 lines
5.1 KiB
Bash
77 lines
5.1 KiB
Bash
# Pingora 独立网关试点配置示例。
|
||
# 当前只用于本机影子验证,不绑定 80/443,也不替代生产 Nginx。
|
||
# systemd 模板默认读取 /etc/genarrative/pingora-gateway.env。
|
||
|
||
GENARRATIVE_PINGORA_GATEWAY_LISTEN=127.0.0.1:18081
|
||
# 可选:直连 HTTPS 入口。默认关闭;启用时必须同时配置 cert/key,并把 FORWARDED_PROTO 设为 https。
|
||
# cert/key 必须允许 genarrative 用户读取;不要直接 chmod Let's Encrypt live/archive 原始目录。
|
||
# 可先用随包 scripts/deploy/pingora-tls-cert-sync.mjs 把证书同步到 /etc/genarrative/pingora-tls/<host>/。
|
||
# 80/443 必须先从 Nginx 或其它进程释放;高端口 loopback 演练可先使用 127.0.0.1:18443 / 127.0.0.1:18080。
|
||
# 如果要绑定 443/80,必须另行人工启用 systemd direct-entry drop-in 授予 CAP_NET_BIND_SERVICE。
|
||
# GENARRATIVE_PINGORA_GATEWAY_TLS_LISTEN=0.0.0.0:18443
|
||
# GENARRATIVE_PINGORA_GATEWAY_TLS_CERT_FILE=/etc/genarrative/pingora-tls/genarrative.world/fullchain.pem
|
||
# GENARRATIVE_PINGORA_GATEWAY_TLS_KEY_FILE=/etc/genarrative/pingora-tls/genarrative.world/privkey.pem
|
||
# 可选:直连 HTTP 只做 301 到 HTTPS;启用时必须已经配置 TLS_LISTEN,ACME challenge 仍从 ACME_ROOT 静态读取。
|
||
# GENARRATIVE_PINGORA_GATEWAY_HTTP_REDIRECT_LISTEN=0.0.0.0:18080
|
||
# GENARRATIVE_PINGORA_GATEWAY_HTTP_REDIRECT_TARGET_SCHEME=https
|
||
GENARRATIVE_PINGORA_GATEWAY_API_UPSTREAM=127.0.0.1:8082
|
||
GENARRATIVE_PINGORA_GATEWAY_SPACETIME_UPSTREAM=127.0.0.1:3101
|
||
# 可选:同一公网 IP 上还承载 Gitea 时,按 Host 整站转发到 Gitea。
|
||
# 命中这些 Host 的请求不走应用维护页、API body limit 或网关接流保护,避免影响 git clone / push。
|
||
# 直连 443 如果要同时服务这些域名,当前单 listener TLS 配置必须使用覆盖全部 Host 的同一张证书。
|
||
# GENARRATIVE_PINGORA_GATEWAY_GITEA_HOSTS=git.genarrative.world
|
||
# GENARRATIVE_PINGORA_GATEWAY_GITEA_UPSTREAM=127.0.0.1:3000
|
||
|
||
GENARRATIVE_PINGORA_GATEWAY_WEB_ROOT=/srv/genarrative/web
|
||
GENARRATIVE_PINGORA_GATEWAY_ACME_ROOT=/var/www/html
|
||
GENARRATIVE_PINGORA_GATEWAY_MAINTENANCE_FILE=/var/lib/genarrative/maintenance/enabled
|
||
GENARRATIVE_PINGORA_GATEWAY_MAINTENANCE_PAGE_FILE=/var/lib/genarrative/maintenance/page.html
|
||
|
||
GENARRATIVE_PINGORA_GATEWAY_FORWARDED_PROTO=http
|
||
GENARRATIVE_PINGORA_GATEWAY_MAX_API_BODY_BYTES=220200960
|
||
# gzip 默认开启;等级和最小响应长度对齐 Nginx gzip_comp_level 5 / gzip_min_length 1024。
|
||
# Pingora 正式化口径固定为 gzip-only;br / zstd 不进入当前网关,Brotli 继续由 Nginx / 前置代理承担。
|
||
GENARRATIVE_PINGORA_GATEWAY_COMPRESSION_ALGORITHMS=gzip
|
||
GENARRATIVE_PINGORA_GATEWAY_GZIP_ENABLED=true
|
||
GENARRATIVE_PINGORA_GATEWAY_GZIP_LEVEL=5
|
||
GENARRATIVE_PINGORA_GATEWAY_GZIP_MIN_LENGTH_BYTES=1024
|
||
|
||
# 静态响应缓存头:HTML / SPA fallback 保持 no-cache,Vite 指纹资源长缓存,其它静态资源保守 no-cache。
|
||
# 网关会额外写入 ETag / Last-Modified 并支持 304 协商缓存;下面三项只控制 Cache-Control。
|
||
GENARRATIVE_PINGORA_GATEWAY_HTML_CACHE_CONTROL=no-cache
|
||
GENARRATIVE_PINGORA_GATEWAY_ASSET_CACHE_CONTROL=public, max-age=31536000, immutable
|
||
GENARRATIVE_PINGORA_GATEWAY_STATIC_CACHE_CONTROL=no-cache
|
||
|
||
# 上游超时默认对齐当前 Nginx 模板:普通无显式长超时路由 60 秒,/api、公开列表/详情和 subscribe 为 3600 秒。
|
||
GENARRATIVE_PINGORA_GATEWAY_UPSTREAM_CONNECT_TIMEOUT_MS=3000
|
||
GENARRATIVE_PINGORA_GATEWAY_UPSTREAM_DEFAULT_READ_TIMEOUT_SECONDS=60
|
||
GENARRATIVE_PINGORA_GATEWAY_UPSTREAM_API_READ_TIMEOUT_SECONDS=3600
|
||
GENARRATIVE_PINGORA_GATEWAY_UPSTREAM_LONG_READ_TIMEOUT_SECONDS=3600
|
||
GENARRATIVE_PINGORA_GATEWAY_UPSTREAM_WRITE_TIMEOUT_SECONDS=3600
|
||
|
||
# 默认只信任 TCP 对端 IP;只有确认前置 Nginx / LB 会清洗 X-Forwarded-For 后才打开。
|
||
GENARRATIVE_PINGORA_GATEWAY_TRUST_X_FORWARDED_FOR=false
|
||
# 打开 TRUST_X_FORWARDED_FOR 前必须显式确认;否则网关会拒绝启动。
|
||
GENARRATIVE_PINGORA_GATEWAY_TRUSTED_FRONT_PROXY_CONFIRMED=false
|
||
|
||
# 单进程内接流保护;默认值对齐当前 Nginx limit_conn / limit_req 口径。
|
||
# INSTANCE_COUNT 默认 1;若横向运行多个 Pingora 实例且仍启用网关接流保护,必须先落地共享保护层并显式确认。
|
||
GENARRATIVE_PINGORA_GATEWAY_INSTANCE_COUNT=1
|
||
GENARRATIVE_PINGORA_GATEWAY_SHARED_PROTECTION_CONFIRMED=false
|
||
GENARRATIVE_PINGORA_GATEWAY_PROTECTION_ENABLED=true
|
||
GENARRATIVE_PINGORA_GATEWAY_ADMIN_API_MAX_CONCURRENT=64
|
||
GENARRATIVE_PINGORA_GATEWAY_ADMIN_API_RATE_PER_SECOND=30
|
||
GENARRATIVE_PINGORA_GATEWAY_ADMIN_API_BURST=16
|
||
GENARRATIVE_PINGORA_GATEWAY_API_MAX_CONCURRENT=64
|
||
GENARRATIVE_PINGORA_GATEWAY_API_RATE_PER_SECOND=300
|
||
GENARRATIVE_PINGORA_GATEWAY_API_BURST=64
|
||
GENARRATIVE_PINGORA_GATEWAY_SPACETIME_MAX_CONCURRENT=256
|
||
GENARRATIVE_PINGORA_GATEWAY_SPACETIME_RATE_PER_SECOND=1000
|
||
GENARRATIVE_PINGORA_GATEWAY_SPACETIME_BURST=256
|
||
# 仅供本机影子探针使用;为空时 /__genarrative_pingora/healthz 一律返回 404。
|
||
GENARRATIVE_PINGORA_GATEWAY_PROBE_TOKEN=
|
||
|
||
GENARRATIVE_PINGORA_GATEWAY_LOG=info,pingora=info,pingora_gateway=info
|
||
GENARRATIVE_PINGORA_GATEWAY_ACCESS_LOG_FILE=/var/log/genarrative/pingora-gateway.access.log
|
||
GENARRATIVE_PINGORA_GATEWAY_OTEL_ENABLED=false
|