nginx + lua 有没有办法获取到 upstream 中某个上游挂了的信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx + lua 有没有办法获取到 upstream 中某个上游挂了的信息相关的知识,希望对你有一定的参考价值。

参考技术A 1下载luajit2.0并安装我是直接使用源码make&&makeinstall所以lib和include是直接放在/usr/local/lib和usr/local/include2下载nginx源码,解压注意版本号,如果机子上已经装了nginx,不想升级的话,请使用/to/nginx/sbin/nginx–v来查看版本号3下载ngx_devel_kitHERE解压4下载nginx_lua_moduleHERE解压5进入nginx源码文件夹cdnginx-1.0.11/6导入环境变量,编译exportLUAJIT_LIB=/usr/local/lib#这个很有可能不一样exportLUAJIT_INC=/usr/local/include/luajit-2.0#这个很有可能不一样./configure--prefix=/opt/nginx\#nginx的安装路径--add-module=/path/to/ngx_devel_kit\#ngx_devel_kit的源码路径--add-module=/path/to/lua-nginx-module#nginx_lua_module的源码路径make-j2makeinstall7测试是否成功:nginxconfig中加入location/hellodefault_type'text/plain';content_by_lua'ngx.say("hello,lua")';使用/to/nginx/sbin/nginx–t检查nginx配置,此时应该没有报错8/to/nginx/sbin/nginx#启动nginx或者/to/nginx/sbin/nginx–sreload#重启nginx访问192.168.100.1/hello会出现“hello,lua” 参考技术B 用以下代码测试确定在 log_by_lua 阶段确实可以读取到正确的 $upstream_addr 和 $upstream_status:

upstream
server 127.0.0.1:1234;
server 127.0.0.2:1235;


server
location /
log_by_lua_block
ngx.log(ngx.ERR, ngx.var.upstream_addr)
ngx.log(ngx.ERR, ngx.var.upstream_status)
-- code to update your upstream status database


本回答被提问者采纳

以上是关于nginx + lua 有没有办法获取到 upstream 中某个上游挂了的信息的主要内容,如果未能解决你的问题,请参考以下文章

用Openresty结合lua提高应用本地缓存效率

lua脚本获取request body

架构设计--API网关

LUA,多个数字字符串到数字

nginx-lua流量采集及拦截

使用nginx时,如何使用lua获取$ scheme?