V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
Livid
V2EX  ›  NGINX

大家在用 Nginx + Lua 的时候有感觉有什么坑么?

  •  
  •   Livid · 2014-02-28 13:21:16 +08:00 · 18883 次点击
    这是一个创建于 3924 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近考虑在一个新项目里用,所以在正式开始写代码之前,想尽可能多地了解一下可能会踩到的陷阱。
    12 条回复    2015-01-14 14:26:34 +08:00
    xatest
        1
    xatest  
       2014-02-28 13:35:23 +08:00   ❤️ 1
    现成的驱动、库比较少,有时候不得不自己造轮子~
    另外留意一下运行环境对Lua语言不同版本支持的特性区别~
    cctvsmg
        2
    cctvsmg  
       2014-02-28 13:40:34 +08:00   ❤️ 1
    lua没啥好的ide,nginx lua调试也是个问题
    在微博问过作者有没有好的调试工具
    春哥回答说他都不用ide调试的(写的时候输出调试信息)
    Orz 果断匿了。。。。。

    再就是真要开发的话
    还要选择web框架
    有个Lapis好像还算这里面唯一一个略像框架的东西,但是也非常粗糙

    总结:
    我感觉nginx-lua比较适合搭配python啥的,把最频繁的请求用lua做优化
    或者,写纯restful风格的简单网站
    逻辑复杂的话开发起来有点别扭..............
    kran
        3
    kran  
       2014-02-28 13:41:11 +08:00   ❤️ 1
    别阻塞了线程
    别依赖全局和模块级别的变量
    clino
        4
    clino  
       2014-02-28 13:46:54 +08:00   ❤️ 1
    "春哥回答说他都不用ide调试的(写的时候输出调试信息)"
    lua python啥的应该都是这样吧,ide完全不需要
    Livid
        5
    Livid  
    MOD
    OP
       2014-02-28 13:51:22 +08:00 via iPhone
    目前还没打算用来做网站,会首先用到的是对 http 头的那些灵活功能。Nginx 自身的 if 和 add_header 局限太多了。
    LazyZhu
        6
    LazyZhu  
       2014-02-28 14:49:23 +08:00
    同关注,刚开始学Lua语言,可能身在坑中而不知。
    qiongqi
        7
    qiongqi  
       2014-02-28 21:23:05 +08:00   ❤️ 1
    模块少,前段时间找一个解析xml的都找不到,春哥推荐的是ffi + libxml2这样的组合,但是技术难度大,没辙只能用正则写个简单的解析器。
    missdeer
        8
    missdeer  
       2014-02-28 21:27:18 +08:00 via Android
    @qiongqi 几年前用lua写个桌面gui程序时自己把xerces c和rapidxml都简单封装过一遍
    fannheyward
        9
    fannheyward  
       2014-03-01 22:30:35 +08:00   ❤️ 2
    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,总体来说非常不错。
    fannheyward
        10
    fannheyward  
       2014-03-01 22:41:15 +08:00   ❤️ 1
    oneoo
        11
    oneoo  
       2014-04-11 10:57:06 +08:00
    http://alilua.com/ aLiLua 就是为了方便使用 Lua 做 Web 项目而生的。跟 OpenResty 出发点不一样
    比如 host-route 和 router 方法,就是为了比较大的 Web 项目专门设计

    性能不错、开发效率高,建议大家可以试试。目前版本 0.40,正在小部分业务环境使用中。欢迎提出大量需求和Bug指正 :)
    felixzhu
        12
    felixzhu  
       2015-01-14 14:26:34 +08:00
    web项目觉得不太合适吧,现在个人主要用来写一些nginx模块类似的东西

    比方说图片云存储的裁图、一些高性能接口之类。。web开发最重要的还是开发效率
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6059 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:28 · PVG 10:28 · LAX 18:28 · JFK 21:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.