反向代理与 TLS
通过 Caddy 或 Nginx 提供 HTTPS,并覆盖可信客户端地址请求头。
API 默认监听回环地址的 3000 端口,仅公开代理的 HTTPS 入口。SITE_HOSTS 使用真实域名;配置 ADMIN_HOST 时,代理和证书也要覆盖该域名。服务端自行提供官网、门户与后台,全部路径均转发到服务端,包括 API、文件、订阅和健康检查。
deploy/caddy/Caddyfile 替换域名后提供自动 TLS 与 HTTP/2。deploy/nginx/ppanel-edge.conf 将 HTTP 重定向到 HTTPS,启用 HTTP/2 和 TLS 1.2/1.3,并列明需自行签发的证书路径。将 panel.example.com 替换为实际域名,通过操作系统软件包安装代理,重新加载前运行 caddy validate --config /etc/caddy/Caddyfile 或 nginx -t。安排证书续期,开放必要的 80/443 端口。
两个示例的单请求限制为 20 MiB,可容纳 API 的 16 MiB 上传分片。大文件使用多个分片请求,不应在代理中缓冲整个多 GB 文件。Nginx 关闭请求缓冲,并允许 120 秒上游读取;同时检查外层负载均衡器的请求体和超时限制。
客户端地址
默认使用 Bun 或 Node 套接字对端地址,忽略客户端提供的 CF-Connecting-IP、X-Forwarded-For 等请求头。使用随附代理时,在应用环境文件设置 CLIENT_IP_HEADER=X-Real-IP;两个代理示例都会用实际对端地址覆盖 X-Real-IP,并移除 CF-Connecting-IP。
本机代理设置 TRUSTED_PROXY_CIDRS=127.0.0.0/8,::1/128;远程代理则列出实际套接字对端的精确网段。这是仅自托管使用的可选配置,接受最多 256 项逗号分隔的 IPv4/IPv6 CIDR;非法或空配置会使启动失败。IPv4 映射的 IPv6 套接字地址也能匹配 IPv4 网段。网段外的对端不能通过请求头指定客户端 IP,API 与认证均改用其套接字地址。未配置时,所有对端都能提供已启用的请求头,必须用防火墙限制仅代理可访问。
可信请求头必须是单个 IPv4 或 IPv6 字面量;缺失值、地址列表、主机名、带端口或方括号的地址、IPv6 zone 标识均按未知处理,不回退到其他转发请求头。禁止公网绕过代理直接访问 API 监听端口。代理前方还有可信负载均衡器时,先在代理中明确限定可信网段,不能接受任意客户端的转发地址。最终选出的客户端地址也用于本地 ASN 查询。
上线前测试 HTTPS、三个界面、门户与后台深链、缺失资源 404、私有文件授权、携带公共主机名的健康检查,以及客户端地址日志与限流。真实 Linux TLS 与代理检查由部署主机完成。