ngx.var.varname #读写NGINX变量的值,最好在lua脚本里缓存变量值,避免在当前请求的声明周期内内存的泄露 ngx.config.ngx_lua_version #当前ngx_lua模块的版本号 ngx.config.nginx_version #nginx版本 ngx.worker.exiting #当前worker进程是否正在关闭 ngx.worker.pid #当前worker进程的PID ngx.config.nginx_configu...
Nginx 可用于创建 API 网关,以事件驱动的方式处理请求,在请求进入服务器时以快速、低资源占用的方式处理查询。此外,它还能降低复杂性,并通过缩短 API 调用的平均响应时间最大限度地提高性能. 我们大多数人对 Kong 已经很熟悉了,但我想探索使用 OpenResty 构建 API Gateway 的可能性。 背景 Nginx与OpenResty之间的联...
Nginx共11个处理阶段,而相应的处理阶段是可以做插入式处理,即可插拔式架构;另外指令可以在http、server、server if、location、location if几个范围进行配置: 更详细的解释请参考http://wiki.nginx.org/HttpLuaModule#Directives。 Nginx Lua API 官网文档:https://www.nginx.com/resources/wiki/modules/lua/#nginx-...
ngx_lua 是Nginx的一个模块,将 Lua 嵌入到 Nginx 中,从而可以使用 Lua 来编写脚本,这样就可以使用 Lua 编写应用脚本,部署到 Nginx 中运行,即 Nginx 变成了一个Web容器;这样开发人员就可以使用 Lua 语言开发高性能 Web 应用了。 ngx_lua 提供了与 Nginx 交互的很多的API,对于开发人员来说只需要学习这些API就...
nginx是一个高性能的反向代理服务器,lua是一个小巧的脚本语言,利用lua-nginx-module模块可以使用lua处理nginx请求,下面将一步步介绍如何编译带lua-nginx-module的nginx。 1.下载源码 编译带lua-nginx-module模块的nginx,需要用到下面6个源码包。 luajit2-2.1-20201027.tar.gz ...
]> install Test::Nginx::Socket::Lua 书写测试单元$ cat 131-config-workers.t # vim:set ft= ts=4 sw=4 et fdm=marker: use lib 'lib'; use Test::Nginx::Socket::Lua; #worker_connections(1014); #master_on(); #workers(2); #log_level('warn'); repeat_each(2); #repeat_each(1);...
body_filter_by_lua 一般会在一次请求中被调用多次, 因为这是实现基于 HTTP 1.1 chunked 编码的所谓“流式输出”的。 log phase log_by_lua 在请求结束的时候运行,可以做些统计工作 nginx api for lua ngx.cookie_time ngx.cookie_time(ngx.time() + 60 * 30) — 设置Cookie过期时间为30分钟 ...
通过Lua API可以获取Nginx的环境变量,用来提升某些业务处理流程,比如有些定时任务只需要在一个worker进程上执行,不需要执行多次,因此可以获取环境变量中worker的ID,在指定的ID上执行任务即可;或者获取Nginx的worker进程是否正在shutdown,以决定是否对数据进行备份操作。
Nginx Lua编程的主要应用场景 Nginx Lua编程主要的应用场景如下: (1)API网关:实现数据校验前置、请求过滤、API请求聚合、AB测试、灰度发布、降级、监控等功能,著名的开源网关Kong就是基于Nginx Lua开发的。 (2)高速缓存:可以对响应内容进行缓存,减少到后端的请求,从而提升性能。比如,Nginx Lua可以和Java容器(如Tomcat...
location /admin { access_by_lua_block { local user = ngx.var.remote_user if user ~= "admin" then ngx.exit(ngx.HTTP_FORBIDDEN) end }}响应处理和过滤: Lua 可以用于在 NGINX 接收到后端服务的响应后进行进一步的处理,例如过滤响应内容、修改响应头等。location /backend { pro...