Hello!
2013/7/22 Water Duan:
> proxy_pass http://127.0.0.1;
> body_filter_by_lua '
> ngx.arg[1] = os.execute("/usr/local/bin/node test.js")
> ';
>
> 需要使用一个nodejs的脚本,根据一定的规则来修改response的body,如果使用body_filter_by_lua_file的话,应该如何读取原有返回内容并调用外部系统命令进行修改?
> 使用os.execute进行测试时没有成功。
>
os.execute 返回 shell 的错误码,而不是 stdout 输出。建议在使用 API 之前首先阅读官方文档以避免不必要的试错成本:
http://www.lua.org/manual/5.1/manual.html#pdf-os.execute
值得一提的是,在 ngx_lua 中使用 os.execute 执行系统命令一方面开销很高(因为至少需要 fork
系统调用),而且在你自己的 shell 进程执行时总是会阻塞 nginx worker 进程,建议不要这么使用。另外,你还需要注意你的
nginx worker 进程所使用的系统帐户是否有足够的权限运行你的 nodejs 脚本。
Regards,
-agentzh