Download - mruby_nginx_module
![Page 2: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/2.jpg)
自己紹介
✦ 久保 達彦(H.N:bokko)
✦ @cubicdaiya(twitter, github)✦ Senior Software Engineer@pixiv Inc.
13年10月16日水曜日
![Page 3: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/3.jpg)
最近はNginxのモジュール開発に凝ってます
✦ mruby_nginx_module✦ Embed mruby into Nginx
✦ ngx_small_light✦ Dynamic Image Transformation for Nginx
✦ ngx_access_token✦ Porting of mod_access_token into Nginx
✦ Nginx本体にも2件ほどパッチ送りました
13年10月16日水曜日
![Page 4: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/4.jpg)
WEB+DBでもNginxの記事を書きましたWEB+DB PRESS Vol.72
□詳解nginx
設定の柔軟性と優れたスケーラビリティ
□共著者@harukasan@semind
13年10月16日水曜日
![Page 5: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/5.jpg)
WEB+DBでもNginxの記事を書きましたWEB+DB PRESS Vol.72
□詳解nginx
設定の柔軟性と優れたスケーラビリティ
□共著者@harukasan@semind
13年10月16日水曜日
![Page 6: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/6.jpg)
Nginx in pixiv
✦ 6000行を越えるnginx.conf
✦ lua_nginx_module導入&運用中
✦ Using ngx_lua in pixiv✦ http://www.slideshare.net/harukayon/
ngx-lua-public
13年10月16日水曜日
![Page 7: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/7.jpg)
とあるpixivを支えるインフラエンジニア
13年10月16日水曜日
![Page 8: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/8.jpg)
一方自分は・・・
13年10月16日水曜日
![Page 9: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/9.jpg)
ngx_mrubyにPull request送る日々(50~60件くらい)
13年10月16日水曜日
![Page 10: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/10.jpg)
今年の夏にfork
13年10月16日水曜日
![Page 11: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/11.jpg)
mruby_nginx_module✦ nginx.confでmrubyが書ける
✦ Nginxのモジュールがmrubyで書ける
✦ ngx_mrubyからfork by bokko
✦ 鋭意開発中
✦ http://git.io/d3sJtw
13年10月16日水曜日
![Page 12: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/12.jpg)
公式サイトhttp://cubicdaiya.github.io/
mruby_nginx_module/
13年10月16日水曜日
![Page 13: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/13.jpg)
mruby
✦ 軽量Ruby
✦ 組み込み分野向けにまつもとゆきひろ氏が開発
✦ Cと連携しやすいように設計されてる
✦ リッチなLuaというイメージ
13年10月16日水曜日
![Page 14: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/14.jpg)
ngx_mrubyとの違い
✦ (mod|ngx)_mrubyはWebサーバの拡張記述統一が目的の一つ
✦ mruby_nginx_moduleはNginxにより特化したものを目指しています
✦ Nginx Core APIバインディングの拡充
✦ 共有メモリ・ノンブロッキングソケットAPI(予定)
✦ Nginxの拡張モジュールは全部mrubyで書ける!くらいにしたいです
13年10月16日水曜日
![Page 15: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/15.jpg)
Hello, World!
13年10月16日水曜日
![Page 16: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/16.jpg)
nginxの変数にset
#=> 55
13年10月16日水曜日
![Page 17: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/17.jpg)
ファイル指定も可能
・先頭に「/」がある場合は絶対パス・それ以外の場合は相対パス(conf_prefixがroot)
13年10月16日水曜日
![Page 18: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/18.jpg)
ヘッダ書き換え
# 本来はtext/html
13年10月16日水曜日
![Page 19: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/19.jpg)
レスポンスボディも(ry
13年10月16日水曜日
![Page 20: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/20.jpg)
各処理フェーズでデータ共有
13年10月16日水曜日
![Page 21: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/21.jpg)
Regexpクラス
13年10月16日水曜日
![Page 22: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/22.jpg)
少し発展的な例
13年10月16日水曜日
![Page 23: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/23.jpg)
(mod|ngx)_access_tokenっぽいアクセス認証
13年10月16日水曜日
![Page 24: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/24.jpg)
(mod|ngx)_access_token✦ S3のクエリ文字列認証っぽい機能を提供
✦ 特定のアクセストークンに基づいた認証
✦ リソースの有効期限設定
✦ mod_access_token✦ livedoor(現NHN Japan)が開発
✦ ngx_access_token✦ @cubicdaiyaが開発
13年10月16日水曜日
![Page 25: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/25.jpg)
xxx_access_tokenの認証方式以下のパラメータをリクエストURLに付加する
・AccessKey -> 公開鍵文字列・Expires -> 有効期限(エポック値)
・Signature -> シグネチャ
Text = Method + Uri + Expires + AccessKeySignature = Base64(HMAC_SHA1(Text, (※) SecretKey))
(※)秘密鍵文字列(サーバ側で設定)
13年10月16日水曜日
![Page 26: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/26.jpg)
ngx_access_tokenwith mruby_nginx_module
13年10月16日水曜日
![Page 27: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/27.jpg)
今のところ使える機能✦ バイトコードキャッシュ
✦ 各種ハンドラへのフック(rewrite,access,content,log)
✦ ヘッダおよびボディのフィルタリング
✦ Nginx変数へのアクセス(set & get)
✦ Nginx::(Request|Context|Time|Base64|Digest|etc)
✦ by Nginx Core API(not mrbgems)
✦ Regexp(PCREベース)
13年10月16日水曜日
![Page 28: mruby_nginx_module](https://reader031.vdocuments.pub/reader031/viewer/2022020217/54bed93f4a79595d6d8b45e4/html5/thumbnails/28.jpg)
今後の予定✦ 共有メモリAPI(Nginx::Shared)
✦ サブリクエストAPI(Nginx::SubRequest)
✦ ノンブロッキングソケットAPI(Nginx::Socket)
✦ Fiber(コルーチン)導入
✦ 宣伝活動
✦ etc
13年10月16日水曜日