Lsky-Pro + AList(阿里云盘WebDAV) 图床完整部署配置教程
前言#
本文基于同一台服务器、1Panel+OpenResty环境,手把手教你将 Lsky-Pro 图床从本地存储切换为 AList 挂载阿里云盘 + WebDAV 远端存储,同时详解每一段 Nginx 配置含义。 你此前使用的是 Nginx+FTP+Bash 传统图床,这套方案优势明显:依托阿里云盘大容量、不限本地磁盘、搭配 Lsky 完善的图床管理、鉴权、外链功能,可直接替换原有 img.isrv.cn 旧图床。
环境汇总:
- 服务器系统:ArchLinux
- 面板:1Panel
- Web服务:OpenResty(Nginx 内核)
- 图床程序:Lsky-Pro(监听
127.0.0.1:40027,域名p.isrv.cn) - 网盘服务:AList(监听
127.0.0.1:5244,域名alist.isrv.cn) - 存储方案:AList 挂载阿里云盘 → 开启 WebDAV → Lsky-Pro 对接 WebDAV
一、前期准备(前置步骤)#
1. AList 基础配置(阿里云盘 + WebDAV)#
- 获取阿里云盘 Refresh Token 打开 AList 官方工具页面,使用阿里云盘APP扫码登录,复制拿到
refresh_token。 - AList 添加存储 进入 AList 后台 → 存储 → 添加驱动,选择阿里云盘Open:
- 挂载路径:
/aliyunpan(全文统一路径,不要修改) - 填入上面获取的
refresh_token - WebDAV 策略:本地代理 保存后状态显示
work即为挂载成功。
- 挂载路径:
- 新建 WebDAV 专用账号 AList 后台 → 用户 → 新建用户:
- 自定义用户名、密码(后续 Lsky 对接使用)
- 权限勾选:WebDAV 管理(必须,否则无法上传/删除文件)
- 路径权限限制为:
/aliyunpan(最小权限,安全隔离)
2. 提前创建远端目录#
在阿里云盘对应目录手动新建层级:aliyunpan/Data/Images,作为图床专属存储目录,保证路径统一。
二、Lsky-Pro 存储策略配置(WebDAV 对接)#
登录 Lsky-Pro 管理员后台,进入 设置 → 存储策略,新建策略,参数如下:
| 配置项 | 填写内容 | 说明 |
|---|---|---|
| 策略名称 | AList-阿里云盘WebDAV | 自定义名称,方便区分 |
| 存储策略 | WebDAV | 选择远端WebDAV协议 |
| 访问域名 | https://p.isrv.cn/fig | 图片对外访问域名,和Nginx路径一一对应 |
| URL Queries | 留空 | 无需额外参数 |
| 连接地址 | https://alist.isrv.cn | AList 公网域名 |
| 认证方式 | Basic | WebDAV标准基础认证,必须选此项 |
| 路径前缀 | /dav/aliyunpan/Data/Images | 固定格式:/dav + AList挂载路径 + 图床目录 |
| 用户名/密码 | AList 新建的WebDAV账号密码 | 账号需具备WebDAV读写权限 |
配置完成后:
- 将该策略设为默认存储;
- 进入
角色组,编辑管理员分组,勾选此存储策略,让账号生效。
报错提示:若提示「URL拼写可能存在错误」,90% 是路径前缀、连接地址、Nginx反向代理三者不匹配,下文重点解决。
三、OpenResty(Nginx) 详细配置(带逐行注释)#
两台服务均部署在同一服务器,使用 1Panel 管理 OpenResty,分为两套配置文件:p.isrv.cn(Lsky图床主站)、alist.isrv.cn(AList 主站)。
3.1 配置 ①:p.isrv.cn(Lsky-Pro 主域名)#
核心作用:
- 正常反向代理 Lsky-Pro 程序(
127.0.0.1:40027); - 新增
/fig路径反向代理到 AList(127.0.0.1:5244),专门承载图片外链与WebDAV上传请求; - 强制HTTPS、配置SSL证书、安全防护。
# 监听端口与域名配置
server {
# 同时监听80(http)、443(https)端口
listen 80 ;
listen 443 ssl ;
# 绑定域名:Lsky图床主域名
server_name p.isrv.cn;
# 默认索引文件
index index.php index.html index.htm default.php default.htm default.html;
# 日志配置:访问日志、错误日志路径
access_log /www/sites/images/log/access.log main;
error_log /www/sites/images/log/error.log;
# ===================== 重点:图片/WEBDRAV 反向代理【核心配置】=====================
# ^~ 表示优先匹配此路径,优先级高于全局 /,保证图片请求不走Lsky主程序
location ^~ /fig {
# 转发Host头部,保证AList识别正常域名
proxy_set_header Host alist.isrv.cn;
# 传递真实客户端IP,用于日志、权限校验
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 传递当前服务器域名
proxy_set_header X-Forwarded-Host $server_name;
# 传递客户端真实IP
proxy_set_header X-Real-IP $remote_addr;
# 传递当前请求协议(http/https)
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket/长连接支持(AList/WebDAV必备)
proxy_set_header Connection upgrade;
proxy_set_header Upgrade $http_upgrade;
# 使用HTTP1.1协议,解决长连接问题
proxy_http_version 1.1;
# 直接转发到本机AList监听端口,不走公网域名,速度更快、更稳定
proxy_pass http://127.0.0.1:5244;
}
# ===============================================================================
# 安全防护:禁止访问隐藏配置文件、版本控制文件
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md) {
return 404;
}
# ACME 证书自动续期路径放行(1Panel SSL证书必备)
location ^~ /.well-known/acme-challenge {
allow all;
root /usr/share/nginx/html;
}
# 拦截 .well-known 下的脚本/压缩包等危险文件,安全加固
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}
# 全局路径:反向代理 Lsky-Pro 主程序(本机40027端口)
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
# 长连接支持
proxy_set_header Connection upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_http_version 1.1;
# 转发至Lsky-Pro本地端口
proxy_pass http://127.0.0.1:40027;
}
# 开启HTTP2协议,提升访问速度
http2 on;
# 强制HTTP请求跳转HTTPS,全站加密
if ($scheme = http) {
return 301 https://$host$request_uri;
}
# SSL证书路径(1Panel自动生成,无需手动修改)
ssl_certificate /www/sites/images/ssl/fullchain.pem;
ssl_certificate_key /www/sites/images/ssl/privkey.pem;
# 启用TLS1.2/1.3,关闭老旧不安全协议
ssl_protocols TLSv1.3 TLSv1.2;
# 加密套件配置,优先使用高强度加密算法
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:!aNULL:!eNULL:!EXPORT:!DSS:!DES:!RC4:!3DES:!MD5:!PSK:!KRB5:!SRP:!CAMELLIA:!SEED;
ssl_prefer_server_ciphers off;
# SSL会话缓存,提升重复访问速度
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 处理HTTPS跳转异常
error_page 497 https://$host$request_uri;
proxy_set_header X-Forwarded-Proto https;
# HSTS 强制浏览器永久使用HTTPS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
}3.2 配置 ②:alist.isrv.cn(AList 主域名)#
此配置为 AList 后台管理、WebDAV 基础访问服务,保持原有配置即可,附带注释方便理解:
server {
listen 80 ;
listen 443 ssl ;
# AList 绑定域名,支持多域名访问
server_name cnalist.isrv.cn alist.isrv.cn;
index index.php index.html index.htm default.php default.htm default.html;
# 日志文件路径
access_log /www/sites/cnalist.isrv.cn/log/access.log main;
error_log /www/sites/cnalist.isrv.cn/log/error.log;
# 禁止访问配置、版本控制文件
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md) {
return 404;
}
# 证书续期路径放行
location ^~ /.well-known/acme-challenge {
allow all;
root /usr/share/nginx/html;
}
# 拦截危险脚本文件
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}
# 全局反向代理到本机AList端口 5244
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Connection upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:5244;
}
http2 on;
# 强制HTTP转HTTPS
if ($scheme = http) {
return 301 https://$host$request_uri;
}
# SSL证书配置
ssl_certificate /www/sites/cnalist.isrv.cn/ssl/fullchain.pem;
ssl_certificate_key /www/sites/cnalist.isrv.cn/ssl/privkey.pem;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:!aNULL:!eNULL:!EXPORT:!DSS:!DES:!RC4:!3DES:!MD5:!PSK:!KRB5:!SRP:!CAMELLIA:!SEED;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
proxy_set_header X-Forwarded-Proto https;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
}3.3 配置生效命令(1Panel/命令行通用)#
修改完配置后,必须校验配置+重载服务,否则配置不生效:
# 1. 校验Nginx/OpenResty配置是否有语法错误
openresty -t
# 2. 平滑重载配置(不中断现有访问)
openresty -s reload1Panel 用户也可以直接在网站配置页面点击「保存并重启」,效果一致。
四、功能验证(确认整套流程可用)#
1. 终端验证文件写入(rclone 查看)#
使用 rclone 连接 AList,查看图床目录文件,确认文件真实上传至阿里云盘:
# 列出图床目录下所有文件
rclone lsf alist:aliyunpan/Data/Images能看到刚上传的图片文件名,说明远端存储写入成功。
2. 浏览器访问外链验证#
Lsky 上传图片后生成外链示例:https://p.isrv.cn/dI43wa.png
- 浏览器打开链接,图片正常加载 → 外链访问正常;
- 进入 AList 网页端,打开
/aliyunpan/Data/Images,可看到对应图片。
3. 功能闭环确认#
- 上传图片 → Lsky 生成外链 → Nginx 转发图片请求到 AList → 文件存储在阿里云盘;
- 删除图片 → Lsky 通过 WebDAV 调用 AList 删除远端文件; 整套流程完全脱离本地服务器磁盘。
五、旧图床迁移思路(替换 img.isrv.cn 传统图床)#
你原有图床架构:Nginx + FTP + Bash + JSON + 原生前端,迁移替换方案参考:
- 域名迁移 将
img.isrv.cn域名解析到当前服务器,参照上文p.isrv.cn的 Nginx 模板,配置img.isrv.cn站点,同样增加/fig反向代理规则指向 AList。 - 存量图片迁移
- 方式1:使用
rclone/rsync将 FTP 本地旧图片批量上传至 AList 阿里云盘对应目录; - 方式2:Lsky 开启「本地文件导入」功能,批量导入原有图片并生成新外链。
- 方式1:使用
- 业务切换 全站逐步替换旧图床外链为 Lsky 新外链,切换完成后即可下线 FTP、Bash 脚本等旧服务。
六、常见问题排错汇总#
- Lsky 提示 URL 拼写错误/连接失败
- 检查:路径前缀必须以
/dav/开头;认证方式为Basic;AList 账号开启 WebDAV 权限。
- 检查:路径前缀必须以
- 上传成功,图片 404 无法访问
- 核心原因:
p.isrv.cn未配置/fig反向代理,或 Nginx 未重载配置。
- 核心原因:
- 403 权限拒绝
- AList 账号路径权限未限制到对应目录,或目录在阿里云盘内不存在。
- 公网能访问AList,但Lsky上传超时
- 优先使用
127.0.0.1:5244本地端口转发,避免走公网域名,减少网络损耗。
- 优先使用
七、方案总结#
这套 Lsky-Pro + AList + 阿里云盘WebDAV 方案,对比传统 FTP 图床:
- 存储无限:依托阿里云盘大容量,不再受服务器硬盘限制;
- 功能完善:Lsky 自带图片管理、鉴权、水印、格式限制、外链分组等专业图床功能;
- 维护简单:无需维护FTP服务、Bash脚本、JSON配置,降低运维成本;
- 高可用:AList+WebDAV 协议成熟稳定,搭配 Nginx 反向代理,访问流畅。
按照本文配置完成后,即可完全替代原有传统图床,长期使用体验更佳。