openresty重定向外部的lua目錄
openresty重定向外部的lua目錄
背景:
??目前暫定采用nginx.exe所在目錄外的lua文件,因為不想把nginx.exe所在目錄納入版本控制管理,也不想添加git過濾目錄。
解決方案:
方案1:
??1.因為每個worker和master進程都需要設置lua的搜索路徑,通過以下方式設置。
package.path = package.path .. ';'..current_dir..'/../lua_src/?.lua'
??(問號通配的是require的參數,或根據系統,將點號替換成斜杠或者反斜杠,如果是pc就會替換成反斜杠。)
??2.如果需要相對于nginx.exe所在目錄的相對路徑,那么可以通過如下方式獲取。
local current_dir = debug.getinfo(1, "S").source:sub(2)
current_dir = current_dir:match("(.*/)") or "" -- 如果參數是相對路徑,則獲取的也是相對路徑。
??為什么不采用如下方式,是因為pc下如果沒有故意添加pwd命令的話pwd命令是缺失的。
local file = io.popen("pwd")
local current_dir = file:read("*l")
??3.設置時機應該是每個進程啟動時,可以通過openresty的init_by_lua或者init_worker_by_lua選項進行設置。
??在nginx.conf的http閉包中添加該選項的設置,如下圖。

關于調試:
??如果文件搜索不到,可以通過nginx.exe所在目錄下的log/error.log查看報錯日志,確認是否有找不到文件的報錯。

浙公網安備 33010602011771號