Nginx (openresty) 生成随机数

Med*_*her 4 nginx lua random-number-generator

我在服务器(包含 lua 模块的 nginx 包)上设置了 openresty,我正在尝试创建一个脚本,该脚本具有在用户浏览器上设置 cookie 的特定几率。我的代码如下所示:

    location =/index.php {
        set $random_num 0;

        rewrite_by_lua '

                marth.randomseed(1);
                nvx.var.random_num = math.random(0,3);

        ';

        add_header Set-Cookie "random_num=$random_num; path=/; domain=...com;";
    }
Run Code Online (Sandbox Code Playgroud)

我知道我的随机种子函数实际上并不是很随机,但我想我稍后会处理。目前我只是想让 nginx 设置一个随机数,但这样做会产生这个错误:

2012/07/11 11:27:20 [error] 5492#0: *44 lua handler aborted: runtime error: [string "rewrite_by_lua"]:3: attempt to ind
ex global 'marth' (a nil value)
stack traceback:
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我做错了什么,是否还有其他方法可以在 nginx 中获取随机数?

Mic*_*ton 8

根据您的错误日志条目,您似乎有一个简单的错字。

            marth.randomseed(1);
Run Code Online (Sandbox Code Playgroud)

这应该是:

            math.randomseed(1);
Run Code Online (Sandbox Code Playgroud)

  • 睡眠需要很多时间,但比调试花费的时间少。建议睡觉。 (7认同)
  • `sleep 28800` 是个好主意。 (2认同)