nginx中如何對變數進行除法操作?
怪我咯
怪我咯 2017-05-16 17:30:00
0
1
797

例如,請求的url是

photos/100000_0_9-.jpg

我想要計算取出100000這個數字,對其進行除法操作

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

然後重寫到該id對應的目錄,但是這樣操作的話,id的值會變成100000/10000,而不是10.

nginx中如何實現這種除法的操作?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(1)
伊谢尔伦

Nginx設定檔裡似乎是不支援資料學運算的,可以使用agentzh編寫的HttpLuaModule。

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

也可以位元組寫個簡單的數學運算擴充 https://github.com/arut/nginx-let-mod...。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板