xor*_*ax5 3 variables lua webserver nginx openresty
程序员们早上好,我正在尝试在 nginx 上创建随机变量(我有 OpenResty nginx+lua)。这是静态变量的示例:
set $teste 123;
Run Code Online (Sandbox Code Playgroud)
那么是否可以将这个静态变量随机化呢?
您需要提供随机种子,否则每次服务器重新启动时您都会得到相同的值。
我在那里使用resty.random.bytes(内部使用 OpenSSL 中的RAND_pseudo_bytes或RAND_bytes)在 nginx 工作启动时提供加密的强伪随机种子。
UPD:您应该使用resty_random.bytes(n, true)真正加密的强伪随机值。如果第二个参数是true,RAND_bytes则将使用 ,而不是RAND_pseudo_byte。但在这种情况下,您将不得不处理熵池可能耗尽的情况。也就是说,如果没有足够的随机性来确保不可预测的字节序列,则resty_random.bytes(n, true)可能会返回。nil
http {
init_worker_by_lua_block {
local resty_random = require('resty.random')
-- use random byte (0..255 int) as a seed
local seed = string.byte(resty_random.bytes(1))
math.randomseed(seed)
}
server {
listen 8888;
location = / {
set_by_lua_block $random {
return math.random(1, 100)
}
echo "random number: $random";
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5876 次 |
| 最近记录: |