Add slider captcha for web login, VitePress documentation on GitHub Pages, and fixes for gallery delete refresh, pagination jump, and copy-format persistence.
3.0 KiB
3.0 KiB
反向代理
生产环境建议通过 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 中间件外,建议在反代 / 防火墙层加固:
server_name白名单 — 仅网站域与图片域;default_server拒绝裸 IP 与其它 Host- 禁止公网暴露 6892 — 仅本机或内网反代访问;公网只开 80/443
- 橙云时限制源站来源 IP — 仅 Cloudflare 回源 IP 段
双域名场景下 PicHost 不会 拒绝未配置的 Host;上述措施由运维层补齐。
Caddy 示例
pic.example.com {
reverse_proxy 127.0.0.1:6892
}
双域名时添加第二个站点块,后端地址相同即可。
缓存注意
图片 404/403 与域名隔离 404 响应带 禁止缓存 头,避免 CDN 长时间缓存错误页面。若在前端再加 CDN,请对动态 API 路径谨慎缓存。