Nginx 自动生成并缓存缩略图

配置示例

# 访问原始图片
location /image {
    root /data;
}

# 访问缩略图片
location ~* ^/thumbnail/(.*)$ {
    alias /data/thumbnail;

    if (!-f $request_filename) {
        proxy_pass http://127.0.0.1/_thumbnail/$1;
        break;
    }

    proxy_set_header     Host $http_host;
    proxy_store          /data/thumbnail/$1;
    proxy_store_access   user:rw  group:r  all:r;
    proxy_temp_path      /tmp/image;
}

# 生成缩略图
location /_thumbnail {
    alias /data/image/;
    # 指定要缩放的宽、高,"-" 表示等比例缩放
    image_filter resize 400 "-";
    image_filter_jpeg_quality 75;
    # 设置能处理的最大原始图片文件,默认 1MB 太小了
    image_filter_buffer 20M;
    # 拒绝外部直接访问
    allow 127.0.0.0/8;
    deny all;
}
/data/image/
原始图片存放目录
/data/thumbnail

缩略图存放目录

需确保 nginx worker 进程有写入权限

chown nginx:nginx /data/thumbnail
/tmp/image
生成缩略图时的临时目录

访问原始图片: http://127.0.0.1/image/test.jpeg

访问缩略图片: http://127.0.0.1/thumbnail/test.jpeg


nginx