ngx.req.get_method
获取当前请求的 HTTP 请求方法名称。
结果为类似 "GET" 和 "POST" 的字符串,而不是 HTTP 方法常量 中定义的数值。
ngx.req.set_method
用 method_id 参数的值改写当前请求的 HTTP 请求方法。
当前仅支持 HTTP 请求方法 中定义的数值常量,例如 ngx.HTTP_POST 和 ngx.HTTP_GET。
ngx.req.set_uri
ngx.req.set_uri_args
ngx.req.get_uri_args
ngx.req.get_post_args
ngx.req.get_headers
ngx.req.set_header
ngx.req.clear_header
ngx.req.read_body -- 同步读取客户端请求体,不阻塞 Nginx 事件循环。
ngx.req.discard_body -- 明确丢弃请求体,也就是说,读取连接中的数据后立即丢弃。
ngx.req.get_body_data
ngx.exec -- 使用 uri、args 参数执行一个内部跳转
ngx.redirect -- 发出一个 HTTP 301 或 302 重定向到 uri。
ngx.print -- 将输入参数合并发送给 HTTP 客户端 (作为 HTTP 响应体)
ngx.say -- 与 ngx.print 相同,同时末尾添加一个回车符。
ngx.log -- 将参数拼接起来,按照设定的日志级别记入 error.log。
ngx.exit
当 status >= 200 (即 ngx.HTTP_OK 及以上) 时,本函数中断当前请求执行并返回状态值给 nginx。
当 status == 0 (即 ngx.OK) 时,本函数退出当前的“处理阶段句柄” (或当使用 content_by_lua 指令时的“内容句柄”) ,继续执行当前请求的下一个阶段 (如果有)。
status 参数可以是 status argument can be ngx.OK, ngx.ERROR, ngx.HTTP_NOT_FOUND,
ngx.HTTP_MOVED_TEMPORARILY 或其它 HTTP status constants。
ngx.sleep -- 无阻塞地休眠特定秒。时间可以精确到 0.001 秒 (毫秒)。
ngx.escape_uri -- 对 str 进行 URI 编码。
ngx.unescape_uri -- 将转义过的 URI 内容 str 解码。
ngx.encode_args -- 根据 URI 编码规则,将 Lua 表编码成一个查询参数字符串。
ngx.decode_args -- 将 URI 编码的查询字符串解码为 Lua 表。本函数是 ngx.encode_args 的逆函数。
ngx.encode_base64 -- 通过 base64 对 str 字符串编码。
ngx.decode_base64 -- 通过 base64 解码 str 字符串得到未编码过的字符串。如果 str 字符串没有被正常解码将会返回 nil。
ngx.crc32_short -- 通过一个字符串计算循环冗余校验码。
ngx.crc32_long -- 通过一个字符串计算循环冗余校验码。
ngx.hmac_sha1 -- 通过 str 待运算数据和 secret_key 密钥串生成结果。
local key = "thisisverysecretstuff"
local src = "some string we want to sign"
local digest = ngx.hmac_sha1(key, src)
ngx.say(ngx.encode_base64(digest))
ngx.md5 -- 通过 MD5 计算 str 字符串返回十六进制的数据。
ngx.md5_bin -- 通过 MD5 计算 str 字符串返回二进制的数据。
ngx.sha1_bin -- 通过 SHA-1 计算 str 字符串返回二进制的数据。
ngx.quote_sql_str -- 根据 MySQL 转义规则返回一个转义后字符串。
ngx.today -- 从nginx的时间缓存(不像Lua的日期库,该时间不涉及系统调用)返回当前的日期(格式:yyyy-mm-dd)。
ngx.time -- 返回从新纪元到从nginx时间缓存(不像Lua的日期库,该时间不涉及系统调用))获取的当前时间戳所经过的秒数。
ngx.now -- 返回一个浮点型的数字,该数字是从新纪元到从nginx时间缓存(以秒为单位,小数部分是毫秒)。
ngx.localtime -- 返回nginx时间缓存(不像Lua的os.date函数,该时间不涉及系统调用)的当前时间戳(格式:yyyy-mm-dd hh:mm:ss)。
ngx.utctime -- 返回nginx时间缓存(不像Lua的os.date函数,该时间不涉及系统调用)的当前时间戳(格式:yyyy-mm-dd hh:mm:ss)。
ngx.cookie_time -- 返回一个可以用做 cookie 过期时间的格式化字符串。参数 sec 是以秒为单位的时间戳(比如 ngx.time 的返回)。
ngx.say(ngx.cookie_time(1290079655))
ngx.http_time -- 返回一个可以用在 http 头部时间的格式化字符串
ngx.parse_http_time -- 解析 http 时间字符串(比如从 ngx.http_time 返回内容)。成功情况下返回秒数,错误的输入字符格式返回 nil 。
ngx.is_subrequest -- 如果当前请求是 nginx 子请求返回 true ,否则返回 false 。
ngx.re.find -- 与 ngx.re.match 类似但只返回匹配结果子字符串的开始索引
ngx.re.sub -- 匹配字符串 subject,将第一个结果替换为字符串或函数类型参数 replace。
ngx.re.gsub -- 就象 ngx.re.sub, 但执行全局替换。
ngx.shared.DICT -- 获取基于共享内存名为 DICT 的 Lua 字典对象,它是一个共享内存区块
http {
lua_shared_dict dogs 10m;
server {
location /set {
content_by_lua '
local dogs = ngx.shared.dogs
dogs:set("Jim", 8)
ngx.say("STORED")
';
}
location /get {
content_by_lua '
local dogs = ngx.shared.dogs
ngx.say(dogs:get("Jim"))
';
}
}
}
ngx.shared.DICT.get -- 从 ngx.shared.DICT 字典中获取名为 key 的键 (key) 值。如果此 key 不存在或已过期,返回 nil。
local cats = ngx.shared.cats
local value, flags = cats:get("Marry")
ngx.get_phase
检索当前正在执行的阶段名称。
返回值可能有:init,init_worker,set,rewrite,access,content,header_filter,body_filter,log,timer
ngx.thread.spawn
ngx.timer.at -- 创建一个 Nginx 定时器。
第一个参数 delay,指定这个定时器的延迟时间,秒为单位。
我们可以指定带有小数部分的时间像0.001,这里代表 1 毫秒。
当需要立即执行当前挂起的处理,指定延迟为0即可。
第二个参数callback,可以是任何 Lua 函数,在指定的延迟时间之后,将会在一个后台的“轻线程”中被调用。