SlideShare a Scribd company logo
1 of 29
Download to read offline
mruby_nginx_module
∼ Embedded mruby into Nginx ∼
久保 達彦
cubicdaiya@gmail.com
13年9月21日土曜日
自己紹介
✦ 久保 達彦(H.N:bokko)
✦ @cubicdaiya(twitter, github)
✦ ピクシブでエンジニアやってます
13年9月21日土曜日
最近は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
13年9月21日土曜日
WEB+DBでもNginxの記事を書きました
WEB+DB PRESS Vol.72
□詳解nginx
設定の柔軟性と
優れたスケーラビリティ
□共著者
@harukasan
@semind
13年9月21日土曜日
WEB+DBでもNginxの記事を書きました
WEB+DB PRESS Vol.72
□詳解nginx
設定の柔軟性と
優れたスケーラビリティ
□共著者
@harukasan
@semind
13年9月21日土曜日
読者の声
13年9月21日土曜日
13年9月21日土曜日
( ゚д゚)ヒィィィィ
13年9月21日土曜日
13年9月21日土曜日
ごめんなさい
ごめんなさい
ごめんなさい
........................
13年9月21日土曜日
13年9月21日土曜日
最終的には、
13年9月21日土曜日
とあるpixivを支えるインフラエンジニア
13年9月21日土曜日
それから月日は流れ...
✦ pixivのnginx.confはまだまだ増えてる
✦ lua_nginx_module導入&運用中
✦ @harukasan++
✦ OpenResty最強
13年9月21日土曜日
一方自分は・・・
13年9月21日土曜日
ngx_mrubyにPull request送っていた(5∼60件くらい)
13年9月21日土曜日
現在、
13年9月21日土曜日
mruby_nginx_module
✦ nginx.confでmrubyが書ける
✦ Nginxのモジュールがmrubyで書ける
✦ ngx_mrubyからfork by bokko
✦ 鋭意開発中
✦ https://github.com/cubicdaiya/mruby_nginx_module
13年9月21日土曜日
mruby
✦ 軽量Ruby
✦ 組み込み分野向けにまつもとゆきひろ氏が開発
✦ Cと連携しやすいように設計されてる
✦ リッチなLuaというイメージ
13年9月21日土曜日
Hello, World!
13年9月21日土曜日
nginxの変数にset
#=> 55
13年9月21日土曜日
ヘッダ書き換え
# 本来はtext/html
13年9月21日土曜日
各処理フェーズでデータ共有
13年9月21日土曜日
(mod|ngx)_access_token
っぽいアクセス認証
13年9月21日土曜日
(mod|ngx)_access_token
✦ S3のクエリ文字列認証っぽい機能を提供
✦ 特定のアクセストークンに基づいた認証
✦ リソースの有効期限設定
✦ mod_access_token
✦ livedoor(現NHN Japan)が開発
✦ ngx_access_token
✦ @cubicdaiyaが開発
13年9月21日土曜日
xxx_access_tokenの認証方式
以下のパラメータをリクエストURLに付加する
・AccessKey -> 公開 文字列
・Expires -> 有効期限(エポック値)
・Signature -> シグネチャ
Text = Method + Uri + Expires + AccessKey
Signature = Base64(HMAC_SHA1(Text, (※) SecretKey))
(※)秘密 文字列(サーバ側で設定)
13年9月21日土曜日
ngx_access_token
with mruby_nginx_module
13年9月21日土曜日
今のところ使える機能
✦ 中間コードキャッシュ
✦ 各種ハンドラへのフック(rewrite,access,content,log)
✦ ヘッダおよびボディのフィルタリング
✦ Nginx変数へのアクセス(set & get)
✦ Nginx::(Request|Context|Time|Base64|Digest|etc)
13年9月21日土曜日
今後の予定
✦ 正規表現API(Nginx::Regexp)
✦ 共有メモリAPI(Nginx::Shared)
✦ サブリクエストAPI(Nginx::SubRequest)
✦ ノンブロッキングソケットAPI(Nginx::Socket)
✦ etc
13年9月21日土曜日

More Related Content

What's hot

What's hot (20)

Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築
 
JAWS Osaka July 2014, Opsworks + Node.js
JAWS Osaka July 2014, Opsworks + Node.js JAWS Osaka July 2014, Opsworks + Node.js
JAWS Osaka July 2014, Opsworks + Node.js
 
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
 
Riot + generator で始める新しいデータバインディング
Riot + generator で始める新しいデータバインディングRiot + generator で始める新しいデータバインディング
Riot + generator で始める新しいデータバインディング
 
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
 
Devfes kyoto2017
Devfes kyoto2017Devfes kyoto2017
Devfes kyoto2017
 
ActiveResourceモデルによるAPIの隠蔽の怖い話 ~レスポンスタイムへの致命的影響~ at #shinjukurb
ActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurbActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurb
ActiveResourceモデルによるAPIの隠蔽の怖い話 ~レスポンスタイムへの致命的影響~ at #shinjukurb
 
Gitを使おう
Gitを使おうGitを使おう
Gitを使おう
 
Concrete5×さくら
Concrete5×さくらConcrete5×さくら
Concrete5×さくら
 
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみるづや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
 
Node js 入門
Node js 入門Node js 入門
Node js 入門
 
Nuxt
NuxtNuxt
Nuxt
 
Vue
VueVue
Vue
 
concrete5とAWSのほどよい関係
concrete5とAWSのほどよい関係concrete5とAWSのほどよい関係
concrete5とAWSのほどよい関係
 
Vuenative
VuenativeVuenative
Vuenative
 
毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話
毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話
毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話
 
今さら聞けないWebサーバの基本知識と選び方
今さら聞けないWebサーバの基本知識と選び方今さら聞けないWebサーバの基本知識と選び方
今さら聞けないWebサーバの基本知識と選び方
 
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状についてClojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
 
Vue.js with Go
Vue.js with GoVue.js with Go
Vue.js with Go
 
海外で注目されてるJs framework “mithril”の特徴
海外で注目されてるJs framework “mithril”の特徴海外で注目されてるJs framework “mithril”の特徴
海外で注目されてるJs framework “mithril”の特徴
 

More from Tatsuhiko Kubo (12)

memcached proxy server development and operation
memcached proxy server development and operationmemcached proxy server development and operation
memcached proxy server development and operation
 
ngx_small_light
ngx_small_lightngx_small_light
ngx_small_light
 
ngx_small_lightで動的サムネイル生成 #yapcasia2012
ngx_small_lightで動的サムネイル生成 #yapcasia2012ngx_small_lightで動的サムネイル生成 #yapcasia2012
ngx_small_lightで動的サムネイル生成 #yapcasia2012
 
pixiv thumbnails
pixiv thumbnailspixiv thumbnails
pixiv thumbnails
 
ngx_small_light at 第2回闇鍋プログラミング勉強会
ngx_small_light at 第2回闇鍋プログラミング勉強会ngx_small_light at 第2回闇鍋プログラミング勉強会
ngx_small_light at 第2回闇鍋プログラミング勉強会
 
ngx_small_light
ngx_small_lightngx_small_light
ngx_small_light
 
memcachedからKyotoTycoonへ
memcachedからKyotoTycoonへmemcachedからKyotoTycoonへ
memcachedからKyotoTycoonへ
 
dtl - diff template library
dtl - diff template librarydtl - diff template library
dtl - diff template library
 
pixivの画像アップロードシステム
pixivの画像アップロードシステムpixivの画像アップロードシステム
pixivの画像アップロードシステム
 
Memorypool Key
Memorypool KeyMemorypool Key
Memorypool Key
 
String Match Algrithm
String Match AlgrithmString Match Algrithm
String Match Algrithm
 
Diff
DiffDiff
Diff
 

Recently uploaded

Recently uploaded (11)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

mruby_nginx_module〜Embedded mruby into Nginx〜