nginx access_by_lua不尊重lua_package_path

时间:2016-10-12 00:38:31

标签: nginx lua nginx-location openresty resty-gwt

我在nginx.config中运行了以下运行的反向nginx代理:

http {
  lua_package_path ";;$prefix/?.lua;?.lua;/etc/nginx/?.lua;/etc/nginx/resty/?.lua;";
}

然后在服务器中的多个位置:

 # xxx SERVICE
    location ~* ^/articles/?(.*) {

      proxy_ignore_client_abort on;

      include cors.conf;

      access_by_lua_file nginx_v4.lua;}

我在 / etc / nginx / 中使用nginx和lua配置运行这个centos 7,以及我在lua包路径中提供的内容。当我运行nginx时,它可以正常导入lua文件(在lua_package_path中找到它)但由于某种原因,当我运行xxx服务时,它失败并带有以下内容:

> 2016/10/11 16:37:21 [notice] 19300#0: getrlimit(RLIMIT_NOFILE):
> 1024:4096 2016/10/11 16:37:21 [notice] 19301#0: start worker processes
> 2016/10/11 16:37:21 [notice] 19301#0: start worker process 19303
> 2016/10/11 16:37:25 [error] 19303#0: *1 failed to load external Lua
> file "/usr/share/nginx/nginx_v4.lua": cannot open
> /usr/share/nginx/nginx_v4.lua: No such file or directory, client:
> 10.1.104.135, server: localhost, request: "GET /content/search?filter.search_string=goog HTTP/1.1", host: "x.x.x.x"
> 2016/10/11 16:37:41 [info] 19303#0: *2 client closed connection while
> waiting for request, client: 10.1.104.135, server: 0.0.0.0:443

由于某种原因它在/ usr / share / nginx中查找实际位于/ etc / nginx中的lua文件:**文件“/usr/share/nginx/nginx_v4.lua”:无法打开

  

/usr/share/nginx/nginx_v4.lua:没有这样的文件或目录**

知道为什么吗?在我对路径进行硬编码之前,这不起作用。

1 个答案:

答案 0 :(得分:3)

lua_package_path是lua查找库的地方,而不是nginx查找lua文件的地方。

您可以更改' access_by_lua_file' to' access_by_lua'使用'要求" nginx_v4"',或者您可以更改Lua文件的位置,或者路径nginx使用' -p / path /&#查找配置39;启动参数。