所以,我试图对每个请求执行一个脚本。我知道这听起来如何,这是针对开发环境的。
我已将此添加到我的 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)
任何想法我可能做错了什么?
我试图让 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 模块的 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/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()
将不起作用。那是对的吗?
感谢您的帮助。