今天在使用lua修改nginx自定義變量的時候,發現死活更改不了,以下所示:nginx
有問題的代碼lua
set $check "1"; rewrite_by_lua_file 'conf/rundeck.lua'; if ($check = "1"){ echo "1 check $check"; content_by_lua 'ngx.say("check is 1")'; } if ($check = "2"){ echo "2 check $check"; content_by_lua 'ngx.say("check is 2")'; }
上面的邏輯很簡單,就是說我設置一個check的變量爲1,而後修改check這個變量值的邏輯在rundeck.lua這個lua腳本處理,奇葩的問題在此出現,我echo出來的check值是2,可是 if 判斷條件裏面 check永遠爲1,因此永遠都走第一個if判斷力,未解。code
因而我稍做修改,運行邏輯就行了,以下所示:
無問題的代碼it
set $check ""; #主要修改這裏,把設置的變量爲空 rewrite_by_lua_file 'conf/rundeck.lua'; if ($check = "1"){ echo "1 check $check"; content_by_lua 'ngx.say("check is 1")'; } if ($check = "2"){ echo "2 check $check"; content_by_lua 'ngx.say("check is 2")'; }
只要把set $check 改成 "" 便可,check這個變量的值就會被lua給改動了。變量