2团
Published on 2024-09-03 / 30 Visits
0
0

Halo 2.19.0版本缩略图的webpsh代理配置

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配置如下(详情可参考https://www.2tuan.work/archives/Halo-supports-image-output-in-webp-format一文):

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的压缩率还是蛮可观的。


Comment