Scripting Nginx with Lua (2012)
londonlua.org
londonlua.org
All this usually just requires a few lines of code and due to the nature of OpenResty, it scales really well and is very lightweight in terms of CPU consumption and memory.
I haven't really used it for anything bigger yet, mostly because then I'd rather prefer Django or Clojure (depending on the tasks) as they have much more functionality / packages for web development.
Particularly the nonblocking IO for db/file/networking operations (out of the box) is neat. Another interesting aspect is that, once you've set up the system, development feels a lot like PHP development, where every lua file can be one page and changing the file results in a direct change on the frontend (if you turn the lua code cache off).
On the other hand, there're some pitfalls, the project is young, it still lacks packages for many, many things (notably, if you want to do crypto, you have to FFI right into the C library, for now. There's a new sha/hmac module, but it's not part of the current OpenResty distribution yet). Also, sometimes it is difficult to find solutions to problems, as it is not widely used as Django or Rails. If you're interested in using it, take some time to read up on LuaJIT as there're several important optimization techniques to really get the best out of it (see below).
All in all, for smaller projects, I love the stack as it is simple, lightweight, and easy to install.
Here're some useful links:
Lua(Jit) Profiler: https://github.com/jgrahamc/lulip/
IDE With Debugger for OpenResty (Pretty cool, you can debug while your browser requests): http://notebook.kulchenko.com/zerobrane/debugging-openresty-...
LuaJIT Performance Guide: http://wiki.luajit.org/Numerical-Computing-Performance-Guide
Lua Performance Guide: http://www.lua.org/gems/sample.pdf
And also we really, really need more people with experience of OpenResty, NGINX, Lua and LuaJIT.
Sometimes you just want to get a simple json endpoint with some dynamic data, and you can do that in 4 lines in lua+openresty.
However, I imagine he wouldn't want to work for another company unless they also allowed him to spend a lot of time on the project.
(not the author, just a fan!)
We touch on our use of it a little bit towards the end of http://velocityconf.com/velocityeu2012/public/schedule/detai.... The last slide is still true- we're hiring! Ruby (remote possible), javascript, devops, and more. See http://www.lonelyplanet.com/jobs/
Openresty (nginx+lua) is probably one of the most underrated technologies we have available nowadays. In my experience, every webapp can offload a ton of work(1) to openresty. The lua code is usually simpler and a lot faster that the equivalent code in the app.
(1) think caching, auth/acl, security filters, stats, logging
Open Source on GitHub: https://github.com/Mashape/mashape-agent