Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
mruby_nginx_module
∼ Embed mruby into Nginx ∼
久保 達彦
cubicdaiya@gmail.com
2013/10/16 渋谷.rb
13年10月16日水曜日
自己紹介
✦

久保 達彦(H.N:bokko)

✦

@cubicdaiya(twitter, github)

✦

Senior Software Engineer@pixiv Inc.

13年10月16日水曜日
最近はNginxのモジュール開発に凝ってます
✦

mruby_nginx_module
✦

✦

ngx_small_light
✦

✦

13年10月16日水曜日

Dynamic Image Transformation for Ng...
WEB+DBでもNginxの記事を書きました
WEB+DB PRESS Vol.72
□詳解nginx
設定の柔軟性と
優れたスケーラビリティ
□共著者
@harukasan
@semind
13年10月16日水曜日
WEB+DBでもNginxの記事を書きました
WEB+DB PRESS Vol.72
□詳解nginx
設定の柔軟性と
優れたスケーラビリティ
□共著者
@harukasan
@semind
13年10月16日水曜日
Nginx in pixiv
✦

6000行を越えるnginx.conf

✦

lua_nginx_module導入&運用中
✦

Using ngx_lua in pixiv
✦

13年10月16日水曜日

http://www.sli...
とあるpixivを支えるインフラエンジニア

13年10月16日水曜日
一方自分は・・・

13年10月16日水曜日
ngx_mrubyにPull request送る日々(50∼60件くらい)

13年10月16日水曜日
今年の夏にfork

13年10月16日水曜日
mruby_nginx_module
✦

nginx.confでmrubyが書ける

✦

Nginxのモジュールがmrubyで書ける

✦

ngx_mrubyからfork by bokko

✦

鋭意開発中

✦

http://git...
公式サイト
http://cubicdaiya.github.io/
mruby_nginx_module/

13年10月16日水曜日
mruby
✦

軽量Ruby

✦

組み込み分野向けにまつもとゆきひろ氏が開発

✦

Cと連携しやすいように設計されてる

✦

リッチなLuaというイメージ

13年10月16日水曜日
ngx_mrubyとの違い
✦

(mod|ngx)_mrubyはWebサーバの拡張記述統一が目的の一つ

✦

mruby_nginx_moduleはNginxにより特化したものを目指しています
✦

✦

共有メモリ・ノンブロッキングソケッ...
Hello, World!

13年10月16日水曜日
nginxの変数にset

#=> 55
13年10月16日水曜日
ファイル指定も可能

・先頭に「/」がある場合は絶対パス
・それ以外の場合は相対パス(conf_prefixがroot)
13年10月16日水曜日
ヘッダ書き換え

# 本来はtext/html

13年10月16日水曜日
レスポンスボディも(ry

13年10月16日水曜日
各処理フェーズでデータ共有

13年10月16日水曜日
Regexpクラス

13年10月16日水曜日
少し発展的な例

13年10月16日水曜日
(mod|ngx)_access_token
っぽいアクセス認証

13年10月16日水曜日
(mod|ngx)_access_token
✦

S3のクエリ文字列認証っぽい機能を提供
✦

✦

✦

特定のアクセストークンに基づいた認証
リソースの有効期限設定

mod_access_token
✦

✦

ngx_access_t...
xxx_access_tokenの認証方式
以下のパラメータをリクエストURLに付加する
・AccessKey -> 公開
・Expires

文字列

-> 有効期限(エポック値)

・Signature -> シグネチャ
Text = Me...
ngx_access_token
with mruby_nginx_module

13年10月16日水曜日
今のところ使える機能
✦

バイトコードキャッシュ

✦

各種ハンドラへのフック(rewrite,access,content,log)

✦

ヘッダおよびボディのフィルタリング

✦

Nginx変数へのアクセス(set & get)

...
今後の予定
✦

共有メモリAPI(Nginx::Shared)

✦

サブリクエストAPI(Nginx::SubRequest)

✦

ノンブロッキングソケットAPI(Nginx::Socket)

✦

Fiber(コルーチン)導入

...
Upcoming SlideShare
Loading in …5
×

mruby_nginx_module

3,019 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日水曜日

×