例如,請求的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中如何實現這種除法的操作?
伊谢尔伦2017-05-16 17:32:00
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...。