カジュアルに Nginx で Lua したい -- openresty(ngx_openresty) 使う

openresty(ngx_openresty) として配布されてる tarボールを使うと 手っ取り早く Nginx で Lua +α する環境が作れます。超便利。

一例: OSXの場合

  • 事前に homebrew も入れておいてね
brew install prce
wget http://agentzh.org/misc/nginx/ngx_openresty-1.0.11.28.tar.gz
tar xvfz ngx_openresty-1.0.11.28.tar.gz
cd ngx_openresty-1.0.11.28
./configure --with-luajit \
            --prefix=~/ngx_openresty-1.0.11.28 \
            --with-cc-opt="-I/usr/local/Cellar/pcre/8.21/include" \
            --with-ld-opt="-L/usr/local/Cellar/pcre/8.21/lib"
make
make install

他プラットフォームについても http://openresty.org/#installation に詳細が記されています。Linuxの場合も yum/apt-get を使えるので楽できます。

何がいいの?

  • LuaとかLua JIT がバンドルされていて、ビルドもしてくれる
    • 開発者曰く、Lua JIT ちょっぱやいから(意訳) おすすめとのこと
  • redis(redis2)やmemcached と繋ぐNginxモジュールだったり、LuaJSONライブラリやハッシュ関数のライブラリだったりこまごまとしたツールも一緒にいれてくれる

用途

少し前に lua-nginx-module の紹介 ならびに Nginx+Lua+Redisによる動的なリバースプロキシの実装案 というネタを書いたのですが、KVSと組み合わせて認証入れたり、アクセスカウンタ実装してみたり、SSI的な事やらせたり いろんな活用方法が考えられます。

あとがき

  • そもそも lua-nginx-module 自体が ngx_openresty の一要素 といった関係。
    • 取り上げる順番前後した
    • カジュアルとか関係なしに、これ使うのが良いですね...

とにもかくにも インストールは簡単にできるので ちょっと触ってみてはいかがでしょうか


追記

Ubuntuだと nginx-extras というパッケージで Lua 付きの Nginx が入りますね。redisのモジュールだったりはdrizzle周りは付いてきませんが、それらが必要ないのであれば こちらもお手軽でいいと思います。