有没有大神。我想实现一个需求。如果可以帮助实现有偿。

72 阅读1分钟

需求内容:

nginx 重定向时取一个变量值作为重定向的对象。nginx运行lua脚本文件取一个redis中key 的一个随机值并将这个值传给nginx的一个变量。 下面是示例代码: nginx.conf

server {
listen 80;
server\_name code.wumacode.cn;
location /front {
set $domain ""; # 定义一个 Nginx 变量
set_by_lua_file $domain /usr/local/nginx/conf; # 调用 Lua 脚本并将结果存储在 $domain 变量中             
#rewrite ^/(.*)$ http\://$domain/$1 permanent;
}
}

url.lua

\-- 连接redis
local ok, err = red:connect("121.37.117.41", 6379)
if not ok then
ngx.log(ngx.ERR, "failed to connect to redis: ", err)
return ngx.exit(500)
end

\-- 认证redis
local res, err = red:auth("123456")
if not res then
ngx.log(ngx.ERR, "failed to authenticate to redis: ", err)
return ngx.exit(500)
end

\-- 选择Redis数据库
red:select(0)

\-- 获取domainlist集合的随机域名
local domain, err = red:srandmember("domainlist")
if not domain then
ngx.log(ngx.ERR, "failed to get random domain from Redis: ", err)
return ngx.exit(500)
end

\-- 将随机域名传递给Nginx变量
ngx.var.domain = domain

\-- 关闭Redis连接
red:close()

以上是我写的相关脚本文件 ,但是不管怎么调试都是不能实现