access_log off;
expires 24h;
add_header Cache-Control private;
content_by_lua_block{
local imgUri = '/images/' .. ngx.var.folder .. '/' .. ngx.var.filename .. '.' .. ngx.var.ext
local imgPath = '/var/www/litgorod/public' .. imgUri
local f = io.open(imgPath)
if f then
if ngx.var.arg_h or ngx.var.arg_w or ngx.var.arg_q or ngx.var.arg_t then
f:close()
local h = 0
local w = 0
local t = ''
local q = 75
local type = ''
if ngx.var.arg_h then h = ngx.var.arg_h end
if ngx.var.arg_w then w = ngx.var.arg_w end
if ngx.var.arg_q then q = ngx.var.arg_q end
if ngx.var.arg_t then t = ngx.var.arg_t end
if t == '1' then type = '^' end
if t == '2' then type = '!' end
local magick = require "imagick"
local img = magick.open(imgPath)
img:set_format('JPEG')
img:set_quality(q)
if h == 0 and w == 0 then
h = img:height()
w = img:width()
else
if h == 0 then h = math.floor((img:height() / img:width() * w) + 0.5) end
if w == 0 then w = math.floor((img:width() /img:height() * h) + 0.5) end
end
img:smart_resize(w .. 'x' .. h .. type)
ngx.header['Content-Type'] = 'image/jpeg'
ngx.say(img:blob())
else
ngx.header['Content-Type'] = 'image/jpeg'
ngx.say(f:read("*all"))
f:close()
end
else
ngx.exit(ngx.HTTP_NOT_FOUND)
end
}
}
location ~* \.(gif|jpg|png|ico|otf|sng|xls|doc|exe|jpeg|tgx|svg|js|css|fb2|epub|woff2|woff|ttf|eot|webp|json|map|mp4|webp)$ {
root /var/www/litgorod/public;
access_log off;
expires 24h;
add_header Cache-Control private;
}
Каждый раз при запросе url вида
/images/avatars/1459297197c16708254c0130af6377df.png
дергается lua скрипт
Хотелось бы дергать ресайзер только url вида
/images/avatars/1459297197c16708254c0130af6377df.png?w=48&h=48
Как корректно поправить локейшен что бы попадали только url из второго примера?
Пробовал дописывать регулярку, результат некорректен
Пробовал обернуть lua скрип в условие
if ($is_args) {
}
Аналогично
Закинь это на пастебин, а то у меня монитор порвало в клочья.
https://pastebin.com/Pp9iWC1W
Обсуждают сегодня