用 Nginx 反向代理 OpenList:绑定域名、上 HTTPS 与子目录部署
OpenList 自带 5244 端口的 HTTP 服务,家庭内网直接用 IP 访问即可。但要绑域名、上 HTTPS、和别的网站共用 443 端口,就需要一层反向代理(Nginx、Caddy、宝塔等均可)。
为什么要反代
- 套上 HTTPS:PDF 预览、打包下载等浏览器功能需要安全上下文才能正常工作
- 域名好看好记,还能套 CDN
- 一台服务器上多个服务共用 80/443 端口
- 隐藏真实端口,由 Nginx 统一做访问控制
先改 site_url
走子目录反代(比如把站点挂在域名的某个子路径下)时,必须先在配置文件里把 site_url 设成最终对外地址或子路径,然后重启程序。配置文件位置与字段说明见 config.json 关键字段。整域名反代则无需设置。
Nginx 子目录示例
把站点代理到 /openlist/ 子路径的关键片段:
location /openlist/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_redirect off;
proxy_pass http://127.0.0.1:5244/openlist/;
client_max_body_size 20000m;
}
两个容易漏的点:
Range与If-Range头必须透传,否则视频拖动进度条、断点续传会失效client_max_body_size要调大(示例给到 20GB),否则大文件上传会被 Nginx 以 413 拒绝(详见 缓存排查)
宝塔面板用户
宝塔添加站点后在「反向代理」里填目标地址指向本机 5244 即可,官方文档提供了截图流程;同样记得在站点配置里放宽上传大小限制。
CDN 的坑
给 OpenList 套 CDN 要慎重:登录 Token 会被 CDN 缓存搅乱,出现「刚登录成功又提示未登录」的怪象(见 登录排查)。不熟悉 CDN 缓存规则的话,先别套。