1. 前言
Halo2博客升级至2.19.0版本后,支持生成缩略图功能,缩略图默认存储于:attachments/thumbnails
文件夹下,而不是在attachments/upload
路径下创建thumbnails
文件夹存放缩略图。然而缩略图的访问路径为/upload/thumbnails
,这就导致原有的webpsh/webp-server-go
代理策略无法生效(webpsh/webp-server-go
默认会去/attachments/upload/thumbnails
文件夹下寻找缩略图)。
webpsh/webp-server-go
配置如下(详情可参考
version: '3'
services:
webp:
image: webpsh/webp-server-go
# image: ghcr.io/webp-sh/webp_server_go
restart: always
volumes:
- ./config.json:/etc/config.json
- /data/2tuan-work/halo2/attachments:/opt/pics
- ./exhaust:/opt/exhaust
- ./metadata:/opt/metadata
ports:
- 127.0.0.1:3333:3333
2. 重写反代路径
最简单的实践思路就是重写Openresty的代理配置,将/upload/thumbnails
开头的访问路径重写为thumbnails
,实现如下:
# 重写缩略图访问请求
location ^~ /upload/thumbnails/ {
rewrite ^/upload/thumbnails/(.*)$ /thumbnails/$1 break;
include ./webp.conf;
}
# 原始图片访问请求
location ^~ /upload/ {
include ./webp.conf;
}
因为webp的代理内容一致,因此将相同部分配置抽取到webp.conf
文件中,具体如下:
proxy_pass http://127.0.0.1:3333;
proxy_set_header X-Real-IP $remote_addr;
proxy_hide_header X-Powered-By;
proxy_set_header HOST $http_host;
proxy_cache cache_zone;
proxy_cache_key $uri;
expires 7d;
access_log off;
3. 效果
由上图可知,缩略图代理yi已生效,且观察红框可知,webp的压缩率还是蛮可观的。