大家好,
为了在飞行中调整图像大小,我决定使用Kraken或imgix这样的服务。
我的图像将显示如下:site.com/img/path-to-img-s250x250.jpg
,我想要实现的是:如果图像path-to-img-s250x250.jpg
存在,那么我将显示它,如果不存在,那么运行nginx重写规则来调整原始图像的大小并保存它。
这是可能的事情还是我应该用PHP做检查?
另外,你有什么更好的想法,如何更好地处理调整图像的飞行?
多谢了
location /img/ {
try_files $uri @getImg @resize;
}
location @getImg{
rewrite "img/(.*)/([a-z0-9]+)-([0-9]+)x([0-9]+).([0-9]{5}).(jpg|jpeg|png|gif|ico)$" /img/$1/$2-$3x$4.$6 break;
}
location @resize{
rewrite "img/(.*)/([a-z0-9]+)-([0-9]+)x([0-9]+).([0-9]{5}).(jpg|jpeg|png|gif|ico)$" $scheme://$host/image?path=$1&file=$2&ext=$6&w=$3&h=$4 break;
}
这是图片链接:site.com/img/prods/1002/filename-200x200.12345.jpg
12345用于版本化
1条答案
按热度按时间cyej8jka1#
您可以使用
try_files
测试一个或多个文件是否存在。dule. html #try_files)了解详细信息。使用 * 正则表达式 *
location
捕获URI的元素。正则表达式位置按顺序计算,因此配置文件中的位置可能很重要。有关详细信息,请参阅此文档。如果
try_files
语句的最后一个参数是URI,它将生成内部重定向。例如:
上述内容本身无法正常工作,因为许多PHP脚本使用最初请求的URI(
REQUEST_URI
)来确定路由。您可以创建自定义位置以显式设置
REQUEST_URI
和SCRIPT_FILENAME
参数。例如:
这个代码块基于您现有的代码(以上只是猜测),我们首先包含全局配置文件,然后覆盖
SCRIPT_FILENAME
和REQUEST_URI
,我假设index.php
正在处理/image
路由。