nginx image_filter ngx_http_image_filter_module 别名问题

nginx image_filter ngx_http_image_filter_module alias problem

大家好,新时代发布者,尝试寻找解决我问题的方法,但找不到任何东西。我不是程序员,只是一个好奇的人,想把事情弄清楚,所以对非特定语言表示歉意。

我正在设置个人 space 来储存我的照片;无论身在何处,我都想通过互联网访问它们。

为了减少加载时间,我试图在 nginx 中设置 image_filter 模块,这就是我的问题所在。我读过的所有快速指南都指定了一个静态别名文件夹,所有图像都应存储在该文件夹中,但我的图像将存储在单独的文件夹中。结构大致如下:

/var/www/travel/trip1/image_folder
/var/www/travel/trip2/image_folder
/var/www/travel/trip3/image_folder

等等。 这很重要,因为该网站还将作为备份,我不想 'mix' 将所有图像放在一个文件夹中。

所以根据行程*编号,别名应该是指相应的子文件夹image_folder。无论我尝试什么,nginx 都只会在配置了静态别名的情况下提供图像:

location ~ "^/media/(?<width>\d+)/(?<image>.+)$" {
alias /var/www/travel/trip1/image_folder/$image;
image_filter resize $width -;
image_filter_jpeg_quality 75;
image_filter_buffer 8M;
}

有什么方法可以创建别名 'dynamic'?所以如果我加载 trip1 索引页面,图像从 /var/www/travel/trip1/image_folder 加载,如果我加载 trip2 索引页面,它们从 /var/www/travel/trip2/image_folder 加载,依此类推?

提前致谢。 狮子座

您可以捕获 URI 的其余部分并对其进行处理,如下所示:

location /static {
    autoindex on;
    alias /home/pi/rpiz-site/staticfiles/;

    location ~ \.png$ {
        image_filter resize 200 200;
    }
}

注意这个嵌套的位置指令部分,它实际上让您捕获初始位置指令 URI 的剩余部分,这与您称之为“动态”别名的相同:

location ~ \.png$ {
    image_filter resize 200 200;
}

这种方法非常适合我的情况:提供静态文件,如果是 png 文件,将其大小调整为 200x200px。