在 Nginx 中使用 Lua 进行简单而高速的处理在很多场景下一直是一个极佳的解决方案。结合了 Nginx 的高效和 Lua 的灵活性,扩展性极强。
这篇文章简单介绍下 Nginx + Lua 处理 Yaml 的思路,主要就是贴参考资料的链接。帮助有类似需求的朋友快速找到合适的方案。
OpenResty 已经火了很多年了,它的核心就是 Nginx + LuaJIT。得益于这个方案持续而广泛的应用,在新版本的 Ubuntu 发行版已经可以使用 apt-get 安装 nginx lua 组件了。实际上这个模块就是 OpenResty 项目的一部分。
sudo apt install libnginx-mod-http-lua
我自己的需求是本地程序需要用 HTTP 方式拿远端的一个 Yaml 文件,然后对 Yaml 中的数组进行一些筛选,删去不想要的部分。很显然,如果是 JSON 格式,那么使用 jq 就可以很好的解决问题。也有人对 jq 做了 Yaml 包装 称为 yq。我的需求是输入输出都是 HTTP,中途运行一个程序进行处理可选的方案还有很多:
- 本地写一个 Python 服务,跑在后台。这个方法最简单那,Python 代码可能只要十几行就可以,但是需要一个进程常驻后台。我不是太想为了一个简单需求开个进程
- CGI Common Gateway Interface:这个可是太 Old-fashion 了,算是上古技术了。不过我的请求很低频,每次请求创建一个进程,正好符合我的需求。不过几年前写 CGI 都忘了,又觉得不新鲜,就没搞
- Nginx + Lua,感觉上除了要现学一下 Lua 之