nginx try_files 带有静态图像或回退到带有重写的 php 文件

nginx try_files 带有静态图像或回退到带有重写的 php 文件
location /image_mini {
#  try_files /static_images/$2.jpg;
  rewrite ^/image_mini/([^.]+)-00([0-9]+)\.jpg$ /image.php?a=$2 last;
}

我使用此重写规则在我的网站上显示图片。例如,如果我想显示图片 ID #123456789,我会使用https://www.example.com/image_mini/some_cool_seo_keywords-00123456789.jpg

然后,image.php 将检查本地缓存中是否找到 /static_images/00123456789.jpg,如果没有,则创建该文件。

我认为如果 nginx 可以在回退到 image.php 之前查找本地静态文件,性能会好得多

我尝试使用 try_files 执行此操作,但不确定如何从 URL 中提取图像 ID,因此我被困在这里 :( 如能提供任何帮助,我将不胜感激

答案1

您可以在语句中使用正则表达式location。例如:

location ~* ^/image_mini/[^.]+-00([0-9]+)\.jpg$ {
    try_files /static_images/$1.jpg /image.php?a=$1;
}

请注意,正则表达式语句的求值location是有序的。请参阅这个文件了解更多信息。此外,这个文件的正确语法try_files

相关内容