lua随机值

产生3以下的数字

local count = 3
math.randomseed(os.time())
local index = math.random(count)
ngx.say(index);

产生 10~13 的数字

math.randomseed(os.time())
local index = math.random(10,13)
ngx.say(index);
local res = ngx.location.capture_multi("http://baidu.com", {method = ngx.HTTP_GET,args = {a = 1, b = '2&'},body = 'c=3&d=4%26'})
ngx.say(res.body)

取出随机值

function readRandomValueInTable(Table)
    math.randomseed(os.time())
    return Table[math.random(1,#Table)]
end

local tables = {'192.168.1.1','172.17.1.1','10.11.9.2'}
local postion = readRandomValueInTable(tables)
ngx.say(postion);

如果是哈希表要全部按key全部的话

function readRandomValueInTable(Table)
    local tmpKeyT={}
    local n=1
    for k in pairs(Table) do
        tmpKeyT[n]=k
        n=n+1
    end
    math.randomseed(os.time())
    return Table[tmpKeyT[math.random(1,n-1)]]
end
server
{
    listen 8080;
    lua_code_cache off;


    location /  {
      default_type 'text/plain';
      content_by_lua_file conf/lua/test.lua;
    }
}



# test.lua

local IPS = {'192.168.1.1','172.17.1.1','10.11.9.2'}


function readRandomValueInTable(Table)
    math.randomseed(os.time())
    return Table[math.random(1,#Table)]
end


function redictRewrite()
    math.randomseed(os.time())
    local _scheme = ngx.var.scheme
    local _redirect = readRandomValueInTable(IPS)
    local _port = math.random(1,1000)
    local _uri = ngx.var.request_uri
    return ngx.redirect(_scheme .. "://" .. _redirect .. ":" .. _port .. _uri)
    -- ngx.say(_scheme .. "://" .. _redirect .. ":" .. _port .. _uri);
end

redictRewrite()
ngx.say(ngx.var['http_host'])       -- 输出变量 $http_host,请求头里的 
local args = nil

--- host = ngx.var.http_host
--- code = ngx.var.arg_code


if ngx.var.http_host = 'xxx.com' then
    ngx.redirect("https://baidu.com", 301)
end

Last updated