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)#

  1. 获取阿里云盘 Refresh Token 打开 AList 官方工具页面,使用阿里云盘APP扫码登录,复制拿到 refresh_token
  2. AList 添加存储 进入 AList 后台 → 存储 → 添加驱动,选择阿里云盘Open
    • 挂载路径:/aliyunpan(全文统一路径,不要修改)
    • 填入上面获取的 refresh_token
    • WebDAV 策略:本地代理 保存后状态显示 work 即为挂载成功。
  3. 新建 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.cnAList 公网域名
认证方式BasicWebDAV标准基础认证,必须选此项
路径前缀/dav/aliyunpan/Data/Images固定格式:/dav + AList挂载路径 + 图床目录
用户名/密码AList 新建的WebDAV账号密码账号需具备WebDAV读写权限

配置完成后:

  1. 将该策略设为默认存储
  2. 进入 角色组,编辑管理员分组,勾选此存储策略,让账号生效。

报错提示:若提示「URL拼写可能存在错误」,90% 是路径前缀、连接地址、Nginx反向代理三者不匹配,下文重点解决。


三、OpenResty(Nginx) 详细配置(带逐行注释)#

两台服务均部署在同一服务器,使用 1Panel 管理 OpenResty,分为两套配置文件p.isrv.cn(Lsky图床主站)、alist.isrv.cn(AList 主站)。

3.1 配置 ①:p.isrv.cn(Lsky-Pro 主域名)#

核心作用:

  1. 正常反向代理 Lsky-Pro 程序(127.0.0.1:40027);
  2. 新增 /fig 路径反向代理到 AList(127.0.0.1:5244),专门承载图片外链与WebDAV上传请求;
  3. 强制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 reload

1Panel 用户也可以直接在网站配置页面点击「保存并重启」,效果一致。


四、功能验证(确认整套流程可用)#

1. 终端验证文件写入(rclone 查看)#

使用 rclone 连接 AList,查看图床目录文件,确认文件真实上传至阿里云盘:

# 列出图床目录下所有文件
rclone lsf alist:aliyunpan/Data/Images

能看到刚上传的图片文件名,说明远端存储写入成功

2. 浏览器访问外链验证#

Lsky 上传图片后生成外链示例:https://p.isrv.cn/dI43wa.png

  1. 浏览器打开链接,图片正常加载 → 外链访问正常;
  2. 进入 AList 网页端,打开 /aliyunpan/Data/Images,可看到对应图片。

3. 功能闭环确认#

  • 上传图片 → Lsky 生成外链 → Nginx 转发图片请求到 AList → 文件存储在阿里云盘;
  • 删除图片 → Lsky 通过 WebDAV 调用 AList 删除远端文件; 整套流程完全脱离本地服务器磁盘。

五、旧图床迁移思路(替换 img.isrv.cn 传统图床)#

你原有图床架构:Nginx + FTP + Bash + JSON + 原生前端,迁移替换方案参考:

  1. 域名迁移img.isrv.cn 域名解析到当前服务器,参照上文 p.isrv.cn 的 Nginx 模板,配置 img.isrv.cn 站点,同样增加 /fig 反向代理规则指向 AList。
  2. 存量图片迁移
    • 方式1:使用 rclone / rsync 将 FTP 本地旧图片批量上传至 AList 阿里云盘对应目录;
    • 方式2:Lsky 开启「本地文件导入」功能,批量导入原有图片并生成新外链。
  3. 业务切换 全站逐步替换旧图床外链为 Lsky 新外链,切换完成后即可下线 FTP、Bash 脚本等旧服务。

六、常见问题排错汇总#

  1. Lsky 提示 URL 拼写错误/连接失败
    • 检查:路径前缀必须以 /dav/ 开头;认证方式为 Basic;AList 账号开启 WebDAV 权限。
  2. 上传成功,图片 404 无法访问
    • 核心原因:p.isrv.cn 未配置 /fig 反向代理,或 Nginx 未重载配置。
  3. 403 权限拒绝
    • AList 账号路径权限未限制到对应目录,或目录在阿里云盘内不存在。
  4. 公网能访问AList,但Lsky上传超时
    • 优先使用 127.0.0.1:5244 本地端口转发,避免走公网域名,减少网络损耗。

七、方案总结#

这套 Lsky-Pro + AList + 阿里云盘WebDAV 方案,对比传统 FTP 图床:

  1. 存储无限:依托阿里云盘大容量,不再受服务器硬盘限制;
  2. 功能完善:Lsky 自带图片管理、鉴权、水印、格式限制、外链分组等专业图床功能;
  3. 维护简单:无需维护FTP服务、Bash脚本、JSON配置,降低运维成本;
  4. 高可用:AList+WebDAV 协议成熟稳定,搭配 Nginx 反向代理,访问流畅。

按照本文配置完成后,即可完全替代原有传统图床,长期使用体验更佳。