lua-nginx-module directives 中文版

文档地址:https://github.com/openresty/lua-nginx-module

lua_package_path

syntax: lua_package_path <lua-style-path-str>

default: The content of LUA_PATH environment variable or Lua's compiled-in defaults.

context: http

使用set_by_lua, content_by_lua指定的脚本来设置Lua module的搜索路径路径字符串采用标准Lua路径形式,;; 可用于表示原始搜索路径。

v0.5.0rc29发行版开始,特殊符号$prefix${prefix}可用于搜索路径字符串中,以指示在启动Nginx服务器时server prefix,该路径通常由-p PATH命令行选项确定的路径


lua_package_cpath

syntax: lua_package_cpath <lua-style-cpath-str>

default: The content of LUA_CPATH environment variable or Lua's compiled-in defaults.

context: http

使用set_by_lua, content_by_lua指定的脚本设置Lua C-module的搜索路径cpath字符串采用标准的Lua cpath形式,;; 用来代表原始cpath。

v0.5.0rc29发行版开始,特殊符号$prefix${prefix}可用于搜索路径字符串中,来指示server prefix在启动Nginx服务器时通常由-p PATH命令行选项来确定该路径




content_by_lua_file

语法: content_by_lua_file <path-to-lua-script-file>

上下文: location, location if

阶段: content

等同于content_by_lua,不同之处在于指定的文件<path-to-lua-script-file>包含Lua代码,或者从v0.5.0rc32发行版开始将执行Lua / LuaJIT bytecode

可以在<path-to-lua-script-file>字符串中使用Nginx变量来提供灵活性。然而,这存在一些风险,通常不推荐。

给出一个相对路径比如foo/bar.lua在启动Nginx服务器时,它们将变成相对于-p PATH命令行选项确定server prefix路径的绝对路径

当Lua代码缓存打开时(默认情况下),用户代码将在第一次请求时加载一次并缓存,并且每次Lua源文件修改时都必须重新加载Nginx配置。可以在开发过程中临时禁用Lua code cache,通过在nginx.conf中通过切换lua_code_cache off以避免重新加载Nginx。

在动态分派的文件路径中支持Nginx变量,例如:

  # CAUTION: contents in nginx var must be carefully filtered,
 # otherwise there'll be great security risk!
 location ~ ^/app/([-_a-zA-Z0-9/]+) {
     set $path $1;
     content_by_lua_file /path/to/lua/app/root/$path.lua;
 }

但要小心恶意用户输入,并且始终仔细验证或过滤用户提供的路径组件。


lua_code_cache

语法: lua_code_cache on | off

默认: lua_code_cache on

上下文: http, server, location, location if

*_by_lua_file指令(如set_by_lua_file和 content_by_lua_file)和Lua模块中为Lua代码启用或禁用Lua代码缓存

关闭时,ngx_lua提供的每个请求将从0.9.3发行版开始,在单独的Lua VM实例中运行因此,set_by_lua_filecontent_by_lua_fileaccess_by_lua_file等中引用的Lua文件不会被缓存,所有使用的Lua模块都将从头开始加载。有了这个,开发人员可以采用编辑和刷新方法。

但请注意,当您在nginx.conf文件中编辑内联Lua代码时,在nginx.conf中内联写入的Lua代码(如由set_by_luacontent_by_lua, access_by_luarewrite_by_lua指定的代码)将不会更新。因为只有Nginx配置文件解析器可以正确解析nginx.conf这个文件,所以唯一的方法是通过发送一个HUP信号或重新启动Nginx 来重新加载配置文件,

即使启用代码缓存,由dofile或者loadfile 装载Lua的文件在* _by_lua_file不能被缓存(除非你自己缓存结果)。通常你可以使用init_by_lua 或者init_by_lua_file指令来加载所有这些文件,或者使这些Lua文件成为真正的Lua模块并通过require加载它们

ngx_lua模块不支持stat模式,Apache mod_lua模块

强烈建议禁用Lua代码缓存以供生产使用,并且仅应在开发过程中使用,因为它会对整体性能产生重大负面影响。例如,禁用Lua代码缓存后,“hello world”Lua示例的性能可能会下降一个数量级


lua_shared_dict

syntax: lua_shared_dict <name> <size>

default: no

context: http

phase: depends on usage

声明一个共享内存区域,<name>作为存储基于Lua词典的ngx.shared.<name>的shm

当前的nginx server实例中,共享内存区域总是由所有nginx工作进程共享。

<size>参数接受诸如km大小单位

  http {
     lua_shared_dict dogs 10m;
     ...
 }

硬编的最小size为8KB,而实际的最小大小取决于实际的用户数据设置(有些人以12KB开头)。

有关详细信息,请参阅ngx.shared.DICT

该指令是在该v0.3.1rc22版本中首次引入的



猜你喜欢

转载自blog.csdn.net/ai2000ai/article/details/80256631
今日推荐