I tend to always use OpenResty for a certain set of tasks these days. Notably, when it is mostly about lightweight data processing. I.e. an API that reads from a DB, transforms some fields and returns json, or a simple proxy server that slightly modifies the data (or just returns it). Or, performing simple calculations based on a few inputs.
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.
If you are interested in working on or with OpenResty then CloudFlare is hiring people in London and San Francisco. We employ agentzh and he works on OpenResty at CloudFlare. We use it _extensively_ throughout the CloudFlare stack.
And also we really, really need more people with experience of OpenResty, NGINX, Lua and LuaJIT.
One of the concerns I have about openresty is that so much of it relies on agentzh. He does amazing work at an insane rate - a rate that I'm a bit concerned (as someone who uses openresty & luajit extensively) can't be sustained in the long term, and is in serious jeopardy if he gets a better offer.
At Lonely Planet we've had a good experience using OpenResty directly behind our CDN. We use it to perform rewrites, route requests to the appropriate applications, manage splits for a/b testing, block malicious traffic, gather metrics, and more!
If you'd like to go a bit higher level without sacrificing performance, I suggest Lapis, a Lua/Moonscript framework built on top of OpenResty: http://leafo.net/lapis/
I already posted this some time ago, but let me insist on this one:
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.
We've recently switched from a file based URL rewrite system to nginx/lua/redis. Before we'd literally include() the rewrites into our configuration files which made -s reload a pain. All in all the implementation was relatively painless, decreased our server reponse time quite a bit and scales way better than our previous naive approach.
We've just done this at our API focused startup and been really impressed with the performance. OpenResty makes interfacing the server with your business logic and external services a breeze. Nginx and Lua/LuaJIT have been battle tested for years and they are extremely fast and reliable.
OpenResty caught my attention in the most recent TechEmpower Benchmarks. It definitely deserves your attention if you need something that can handle concurrent requests at a large scale:
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