openrestry 的搭建

1安装依赖环境
yum -y install gcc perl pcre-devel openssl openssl-devel

2上传解压:
安装Lua_JIT 及时编译环境
tar -zxvf LuaJIT-2.0.4.tar.gz -C /usr/local/src/
cd /usr/local/src/LuaJIT-2.0.4/
make && make install PREFIX=/usr/local/luajit

3 配置Lua_JIT 环境变量
vi /etc/profile
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0
source /etc/profile


4 上传必备4 模块,解压到自建文件夹中
mkdir -p /usr/local/nginx/modules
tar -zxvf lua-nginx-module-0.10.0.tar.gz -C /usr/local/nginx/modules/
tar -zxvf set-misc-nginx-module-0.29.tar.gz -C /usr/local/nginx/modules/
tar -zxvf ngx_devel_kit-0.2.19.tar.gz -C /usr/local/nginx/modules/
tar -zxvf echo-nginx-module-0.58.tar.gz -C /usr/local/nginx/modules/

5 安装openresty
tar -zxvf openresty-1.9.7.3.tar.gz -C /usr/local/src/
cd /usr/local/src/openresty-1.9.7.3/
./configure --prefix=/usr/local/openresty --with-luajit && make && make install

6 安装 nignx
tar -zxvf nginx-1.8.1.tar.gz -C /usr/local/src/
cd /usr/local/src/nginx-1.8.1/
./configure --prefix=/usr/local/nginx \
--with-ld-opt="-Wl,-rpath,/usr/local/luajit/lib" \
--add-module=/usr/local/nginx/modules/ngx_devel_kit-0.2.19 \
--add-module=/usr/local/nginx/modules/lua-nginx-module-0.10.0 \
--add-module=/usr/local/nginx/modules/set-misc-nginx-module-0.29 \
--add-module=/usr/local/nginx/modules/echo-nginx-module-0.58
make -j2
make instal

转载于:https://www.cnblogs.com/tanxiangjie/p/10544166.html

是的,OpenResty可以通过Lua脚本和Redis数据库来动态获取upstream。具体实现方式如下: 1. 在Nginx配置文件中定义upstream,并将upstream的backend地址设置为一个占位符,例如: ``` upstream backend { server 127.0.0.1:8080; } server { location / { proxy_pass http://backend; } } ``` 2. 在Lua脚本中连接Redis数据库,并获取upstream的backend地址列表。例如: ``` local redis = require "resty.redis" local red = redis:new() -- 连接Redis数据库 red:set_timeout(1000) local ok, err = red:connect("127.0.0.1", 6379) if not ok then ngx.log(ngx.ERR, "failed to connect to Redis: ", err) return ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) end -- 获取backend地址列表 local backend_list, err = red:smembers("backend_list") if not backend_list then ngx.log(ngx.ERR, "failed to get backend list from Redis: ", err) return ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) end -- 关闭Redis连接 red:set_keepalive(10000, 100) -- 将backend地址列表设置到upstream中 local upstream = require "ngx.upstream" local backend_servers = {} for i, backend in ipairs(backend_list) do table.insert(backend_servers, {["server"] = backend}) end local ok, err = upstream.set_servers("backend", backend_servers) if not ok then ngx.log(ngx.ERR, "failed to update backend servers: ", err) return ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) end ``` 3. 在Nginx配置文件中引入Lua脚本,并定时执行该脚本。例如: ``` lua_shared_dict backend 1m; upstream backend { server 127.0.0.1:8080; } server { location / { access_by_lua_file "/path/to/lua/script.lua"; proxy_pass http://backend; } } ``` 这样,当Redis数据库中的backend地址列表发生变化时,Lua脚本会自动更新upstream的backend地址,并实现动态负载均衡。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值