nginx中如何对变量进行除法操作?

浏览:40日期:2022-06-28

问题描述

例如,请求的url是

photos/100000_0_9-.jpg

我想要计算取出100000这个数字,对其进行除法操作

location ~ /photos/([0-9]+)_0_([0-9]+)-.jpg$ { root ’/home/images’; set $id $1/10000; set $version $2; rewrite /photos/([0-9]+)_0_([0-9]+)-.jpg$ /$id/$version/$1_0_$2-.jpg;}

然后重写到该id对应的目录,但是这样操作的话,id的值会变成100000/10000,而不是10.

nginx中如何实现这种除法的操作?

问题解答

回答1:

Nginx配置文件里似乎是不支持数据学运算的,可以使用agentzh编写的HttpLuaModule。

location ~ /photos/([0-9]+)_0_([0-9]+)-.jpg$ { root ’/home/images’; set $id $1; set $version $2; set_by_lua $id 'return math.floor(tonumber(ngx.arg[1])/10000)'$id; rewrite /photos/([0-9]+)_0_([0-9]+)-.jpg$ /$id/$version/$1_0_$2-.jpg;}

也可以字节写个简单的数学运算扩展 https://github.com/arut/nginx-let-mod...。

相关文章: