技术解析

大家在用 Nginx + Lua 的时候有感觉有什么坑么?
0
2021-05-27 20:11:32
idczone
最近考虑在一个新项目里用,所以在正式开始写代码之前,想美国服务器尽可能多地了解一下可能会踩到的陷阱。
现成的驱动、库比较少,有时候不得不自己造轮子~
另外留意一下运行环境对Lua语言不同版本支持的特性区别~

lua没啥好的ide,nginx lua调试也是个问题
在微博问过作者有没有好的调试工具
春哥回答说他都不用ide调试的(写的时候输出调试信息)
Orz 果断匿了。。。。。
再就是真要开发的话
还要选择web框架
有个Lapis好像还算这里面唯一一个略像框架的东西,但是也非常粗糙
总结:
我感觉nginx-lua比较适合搭配python啥的,把最频繁的请求用lua做优化
或者,写纯restful风格的简单网站
逻辑复杂的话开发起来有点别扭..............

别阻塞了线程
别依赖全局和模块级别的变量

"春哥回答说他都不用ide调试的(写的时候输出调试信息)"
lua python啥的应该都是这样吧,ide完全不需要

目前还没打算用来做网站,会首先用到的是对 http 头的那些灵活功能。Nginx 自身的 if 和 add_header 局限太多了。

同关注,刚开始学Lua语言,可能身在坑中而不知。

模块少,前段时间找一个解析xml的都找不到,春哥推荐的是ffi + libxml2这样的组合,但是技术难度大,没辙只能用正则写个简单的解析器。

几年前用lua写个桌面gui程序时自己把xerces c和rapidxml都简单封装过一遍

1. 没框架。我们自己写了个很轻量简单的 https://github.com/appwilldev/moochine 在用。
2. 第三方库比较少,现在用的第三方库主要都是春哥的 lua-resty-X 系列,这些都适用 LuaJIT。
3. Vim + logger 开发,相对来说比较费力,不过熟练后效率不成问题。
4. 避免全局变量,可以用 ZeroBrane Studio 或者春哥的 releng 分析找出全局变量。
5. 复杂长 CPU 费时操作不适合,一般都是导入队列然后离线处理。
6. 开发时可以 lua_code_cache off; 线上不要,代价太大。
7. Lua 有些方法在 ngx_lua 下开销代价很大,比如 os.time(),可以用 ngx.time() 替换。
8. 及时跟进 OpenResty 最新版,bug 修复很快,现在最新版默认支持 LuaJIT。
我们目前 App 接口都在用 OpenResty,总体来说非常不错。

补上 releng: https://github.com/agentzh/nginx-devel-utils/blob/master/lua-releng

http://alilua.com/ aLiLua 就是为了方便使用 Lua 做 Web 项目而生的。跟 OpenResty 出发点不一样
比如 host-route 和 router 方法,就是为了比较大的 Web 项目专门设计
性能不错、开发效率高,建议大家可以试试。目前版本 0.40,正在小部分业务环境使用中。欢迎提出大量需求和Bug指正 :)

web项目觉得不太合适吧,现在个人主要用来写一些nginx模块类似的东西
比方说图片云存储的裁图、一些高性能接口之类。。web开发最重要的还是开发效率

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服