最近在闲置的服务器上部署了Alsit,由于曾经已经有过几次部署经验,加之Alist很容易部署,这次就想多折腾一点。这个服务器的443和80已经被Nginx的一个页面占用,加之想要域名直接访问而不是5244端口,希望能够复用443端口。除了曾经用过的xray的fallback功能以外,能想到的端口复用方法就是反向代理了,而这也是我第一次学习配置反代。
我希望将Alist部署到https://domain.com/alist,根据官网的介绍,我很轻松写好了反代的配置块:
server {
……
location /alist {
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;
# the max size of file to upload
client_max_body_size 20000m;
……
}
但是不出所料,很快就出现了问题:打开后无法正常进入页面。根据官网对反代的说明,我找到了可能的解决方式:需要将反代配置以及alist配置文件的站点后加上/alist,比如nginx配置中:
proxy_pass http://127.0.0.1:5244/alist;
果然可以正常进入了。而正当我窃喜时,新的问题又被发现了:所有图片以及视频的预览都会报错。

在github上看到了不少issue,就是关于反代后无法播放视频的。于是按照issue后给出的解决方法,配置了host转发,然而问题依然存在。我怀疑是非标准网页端口的问题,于是暂停了Nginx服务器,单独将443端口留给alist并配置好证书,居然还是没有解决问题!那么难道是必须部署在一级目录?我将alist从domain.com/alist换为domain.com,问题依旧。
然而此时我发现:下载功能是可以正常使用的。此时我灵光一现:难道是预览获取到了错误链接?我首先尝试了获取下载链接,结果如下:


然后,我打开预览界面,播放视频,抓取请求:

果不其然,请求的视频链接是domain.com//p……,与下载链接相比较,正确的链接应该是domain.com/p……,预览的请求链接在域名后多了一个斜杆!
多的这一个斜杠从何而来?我回想之前的操作,唯一与域名相关的有两次改动,一次是配置Nginx的反代,另一次是位于alist/data/的config.json配置文件。突然一道电光闪过,真相只有一个!光速打开config.json,真凶立刻显现在面前:
"site_url": "https://misaka.linkpc.net/",
而最初,作为二级目录的配置则也是:
"site_url": "https://misaka.linkpc.net/alist/",
是的!无论是几级目录,我都将最后加上了斜杠。这直接导致了预览链接多出来了一个斜杠。看到这里,没想到是这么傻的问题,忍不住笑了出来。
回想曾经的部署,我也遇到过很多难以解决的问题,有些就直接放弃了。其中是否也有不少这种令人捧腹的问题呢?