mruby_nginx_module

2,759 views
2,694 views

Published on

in shibuya.rb 2013/10/16

mruby_nginx_module

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

×