nginx set變量后lua無法改值


今天在使用lua修改nginx自定義變量的時候,發現死活更改不了,如下所示:

有問題的代碼

            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")';
            }   

上面的邏輯很簡單,就是說我設置一個useruri的變量為1,然后修改check這個變量值的邏輯在rundeck.lua這個lua腳本處理,奇怪的問題在此出現, if 判斷條件里面 check永遠為1,所以永遠都走第一個if判斷,經過查詢相關資料發現,if 將會在 rewrite_by_lua_file 之前執行,所以就會產生這樣的問題,資料可以參考:http://timd.cn/ngx-lua-rewrite/

於是我稍作修改,運行邏輯就好了,如下所示:
無問題的代碼

            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給改動了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM