标签: lua

nginx lua:os.execute waitpid() 失败(10:没有子进程)

所以,我试图对每个请求执行一个脚本。我知道这听起来如何,这是针对开发环境的。

我已将此添加到我的 nginx 配置中 access_by_lua_file "/opt/nginx/git-magic.lua";

git-magic.lua 包含 local status = os.execute('/opt/nginx/git-magic.sh')

并且 git-magic.sh 包含: echo hello >> /tmp/git-magic

问题是:

每当我点击任何 URL 时,我都会在 nginx 错误日志中得到以下信息: 2012/09/27 15:35:48 [alert] 3241#0: waitpid() failed (10: No child processes)

任何想法我可能做错了什么?

nginx lua

7
推荐指数
1
解决办法
2453
查看次数

在 Redis 中安装额外的 LUA 模块

我试图让 Redis 允许 EVAL ( http://redis.io/commands/EVAL ) 发出 HTTP 请求。

两个模块:LuaCURL 和 Luasocket 提供了这种能力。Redis 源代码有一个包含附加模块(例如 cjson)的目录http://download.redis.io/redis-stable/deps/lua/src/,我尝试添加 luacurl.c 但我收到一个又一个错误。我已经设法编译它启用 os.execute - 通过编辑 scripting.c - 这允许我运行 curl 命令,但这是一个糟糕的解决方案。

如何在 Redis 的 Lua 中编译 HTTP 请求?

据推测,最简单的方法是拥有一个独立的 luasocket.so 文件,但我不确定如何做到这一点。

lua redis

6
推荐指数
1
解决办法
1324
查看次数

Nginx (openresty) 生成随机数

我在服务器(包含 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 中获取随机数?

nginx lua random-number-generator

4
推荐指数
1
解决办法
7276
查看次数

NGINX - OpenResty - 如何基于字符串反向代理对 2 个不同服务器的调用?

我正在尝试配置 NGINX/OpenResty 以根据 SOAP 请求上存在的字符串将 SOAP 调用代理到 ​​2 个不同的服务器。

我能做什么:我能够根据 SOAP 客户端调用的路径将请求代理到 2 个不同的服务器:

location /pathA {
    proxy_pass http://www.ServerA.com/PathA/;
}
location /pathB {
    proxy_pass http://www.ServerB.com/PathB/;
}
Run Code Online (Sandbox Code Playgroud)

我不能做什么:

我无法根据请求的内容分离流量。我认为主要原因是我无法正确组装LUA脚本来提取信息并随后使用它来代理请求。

location / {
    conten_by_lua '
        ngx.req.read_body()
        local match = ngx.re.match(ngx.var.request_body,"STRING TO FIND")
        if match then
            proxy_pass http://www.ServerA.com/PathA/;
        else
            proxy_pass http://www.ServerB.com/PathB/;
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

我安装了 OpenResty 并且 LUA 工作正常。

我想我在某处读到如果请求不是 HTTP POSTngx.req.read_body()将不起作用。那是对的吗?

感谢您的帮助。

nginx lua openresty

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

lua ×4

nginx ×3

openresty ×1

random-number-generator ×1

redis ×1