发现问题

在使用兰空图床2.1版本时,做Https反代后访问域名突然一直卡住,通过控制台发现有一个资源无法访问了,查询原因后是谷歌字体加载不出来了,可能是被墙了,追溯源码后发现兰空在三处地方使用了这一资源

谷歌字体资源加载失败

https://github.com/lsky-org/lsky-pro/blob/bb37a11bfbd5e072d7e0bec234e9220d434396c0/resources/views/layouts/app.blade.php#L13

https://github.com/lsky-org/lsky-pro/blob/bb37a11bfbd5e072d7e0bec234e9220d434396c0/resources/views/layouts/guest.blade.php#L13

https://github.com/lsky-org/lsky-pro/blob/bb37a11bfbd5e072d7e0bec234e9220d434396c0/resources/views/install.blade.php#L10

解决过程

我是用兰空图床的docker版本进行部署的:cold-pig/LskyPro-Docker: ☁️兰空图床(Lsky Pro) - Docker自动构建,这样部署的好处是可以借助Action将兰空图床的最新版本推送到docker官方库上,使用到最新版本的功能。

我加上了Https反代:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#监听kl.shinie.top
server {
listen 80;
server_name kl.shinie.top;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}

server {
listen 443 ssl;
ssl_certificate /etc/ssl/kl.shinie.top/kl.shinie.top.pem;
ssl_certificate_key /etc/ssl/kl.shinie.top/kl.shinie.top.key;
ssl_session_cache shared:SSL:4m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
server_name kl.shinie.top;
location /{
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host:$server_port;#主要这一行添加$server_port
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:9110/;
client_max_body_size 20000m;
}
}

出现这一问题的时候我先浏览器访问了一下谷歌字体:https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap

发现无法访问,排除是反代造成的问题

无法获取谷歌字体

后面尝试换浏览器、重装图床等方法还是无法解决问题。最后妥协了:不用这个字体了。因为是在docker部署,可以使用以下命令删除使用谷歌字体的代码:

1
2
3
4
5
docker exec -it lskypro sed -ie '/fonts.googleapis.com/d' /var/www/html/resources/views/install.blade.php

docker exec -it lskypro sed -ie '/fonts.googleapis.com/d' /var/www/html/resources/views/layouts/app.blade.php

docker exec -it lskypro sed -ie '/fonts.googleapis.com/d' /var/www/html/resources/views/layouts/guest.blade.php

如果不是docker部署,可以在兰空图床安装目录下找到以下三个文件删除谷歌字体链接即可:

resources/views/install.blade.php

resources/views/layouts/app.blade.php

resources/views/layouts/guest.blade.php