feat: add runtime policy and observability
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
237899745
2026-07-25 20:00:11 +08:00
parent f3c7a77a37
commit 64b1169e8c
32 changed files with 1236 additions and 120 deletions

View File

@@ -44,6 +44,7 @@ API 健康后 Worker 才会启动,避免两个进程在首次部署时同时
```bash
docker compose --env-file .env.production -f docker/docker-compose.prod.yml ps
curl --fail http://127.0.0.1:8080/health
curl --fail http://127.0.0.1:8080/metrics
```
预期健康响应:
@@ -66,7 +67,7 @@ docker compose --env-file .env.production -f docker/docker-compose.prod.yml up -
### 反向代理
直接通过服务器地址访问时保持 `TRUST_PROXY_HEADERS=false`。只有当 8080 端口不对客户端开放、所有请求都经过可信反向代理时,才设置 `true`,并由代理覆盖 `X-Forwarded-For``X-Forwarded-Proto`
生产 Compose 默认把 API 端口绑定到 `127.0.0.1`。若确实需要绕过反向代理直接通过服务器地址访问,显式设置 `IMAGEFORGE_BIND_ADDRESS=0.0.0.0`,同时保持 `TRUST_PROXY_HEADERS=false` 并配置主机防火墙。只有当 API 端口不对客户端开放、所有请求都经过可信反向代理时,才设置 `TRUST_PROXY_HEADERS=true`,并由代理覆盖 `X-Forwarded-For``X-Forwarded-Proto`
代理至少需要:
@@ -82,6 +83,19 @@ location / {
}
```
`/metrics` 包含运行状态与队列数据,不应通过公开域名暴露。生产 Nginx 应单独拒绝该路径Prometheus 直接抓取只绑定回环地址的 API 端口:
```nginx
location = /metrics {
allow 127.0.0.1;
allow ::1;
deny all;
proxy_pass http://127.0.0.1:8080;
}
```
应用会为所有响应设置 CSP、`X-Content-Type-Options``X-Frame-Options``Referrer-Policy``Permissions-Policy`。TLS 网关还应设置 `Strict-Transport-Security`
### 日志与备份
```bash