Files
PicHost/docs-site/guide/reverse-proxy.md
T
O96u ff20f97522 release: v1.2.1 — login captcha, docs site, and bug fixes
Add slider captcha for web login, VitePress documentation on GitHub Pages,
and fixes for gallery delete refresh, pagination jump, and copy-format persistence.
2026-08-29 11:42:18 +08:00

3.0 KiB
Raw Blame History

反向代理

生产环境建议通过 Nginx、Caddy、NPM(Nginx Proxy Manager)或 NAS 自带反代,将 HTTPS 流量转发到 PicHost 容器 6892 端口。

基本要求

  • 反代目标:http://127.0.0.1:6892(或容器所在主机 IP)
  • 保留请求头:Host、X-Forwarded-Proto(及常见的 X-Forwarded-For)
  • 上传大小:Nginx 建议 client_max_body_size 12m 或更大
  • 公网访问请配置 HTTPS

单域名示例(Nginx)

管理、API、出图同一域名:

server {
  server_name pic.example.com;
  location / {
    proxy_pass http://127.0.0.1:6892;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    client_max_body_size 12m;
  }
}

环境变量(可选):

IMAGE_BASE_URL=https://pic.example.com

未设置 IMAGE_BASE_URL 时,PicHost 会根据反代转发的 Host 与 X-Forwarded-Proto 推断公网地址。

双域名

若后台与图片使用不同域名,两个 server 块均可 全量反代 到同一端口;隔离由 PicHost 中间件完成。

详见专章:双域名分离。

Cloudflare 橙云

PicHost 应用运行在 自有服务器 / Docker(端口 6892),Cloudflare 侧推荐:

做法 说明
DNS 橙云 admin / pic 两个子域 Proxied → 源站反代 6892,SSL Full (strict)
DNS 优选 与 PicHost 兼容;Host 仍为正式域名
R2 在存储页作对象后端,非 Pages 托管应用
源站防火墙 仅放行 Cloudflare IP,禁止公网直连 6892

不建议:

  • 用 Cloudflare Pages(*.pages.dev)或 Workers(*.workers.dev)对 PicHost 整站反代 — 会多出第三 Host,且可能绕过双域名隔离(见 双域名分离 · 安全与注意事项)
  • 在 CF 控制台「从 Git 创建 Worker」部署本仓库 — 当前为 node-server 预设,无法直接 wrangler deploy

源站安全(双域名推荐)

除 PicHost 中间件外,建议在反代 / 防火墙层加固:

  1. server_name 白名单 — 仅网站域与图片域;default_server 拒绝裸 IP 与其它 Host
  2. 禁止公网暴露 6892 — 仅本机或内网反代访问;公网只开 80/443
  3. 橙云时限制源站来源 IP — 仅 Cloudflare 回源 IP 段

双域名场景下 PicHost 不会 拒绝未配置的 Host;上述措施由运维层补齐。

Caddy 示例

pic.example.com {
  reverse_proxy 127.0.0.1:6892
}

双域名时添加第二个站点块,后端地址相同即可。

缓存注意

图片 404/403 与域名隔离 404 响应带 禁止缓存 头,避免 CDN 长时间缓存错误页面。若在前端再加 CDN,请对动态 API 路径谨慎缓存。

相关