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查看报错日志,确认是否有找不到文件的报错。

posted @ 2024-04-09 10:57  昂流  阅读(47)  评论(0编辑  收藏  举报
//替换成自己路径的js文件 hhttp(s)://static.tctip.com/tctip-1.0.4.min.js