Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Nginx + mrubyを動かす / run the ngx_mruby
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Takeshi Kondo
May 23, 2018
Technology
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Nginx + mrubyを動かす / run the ngx_mruby
Takeshi Kondo
May 23, 2018
More Decks by Takeshi Kondo
See All by Takeshi Kondo
SREの知識地図 - 第2章の紹介 - / Knowledge Map of SRE – Introduction to Chapter 2 –
chaspy
0
120
SRE NEXT CfP チームが語る 聞きたくなるプロポーザルとは / Proposals by the SRE NEXT CfP Team that are sure to be accepted
chaspy
2
1.9k
Slack Platform(Deno) での RAG 実装 - LangChain(js) を使ってみた / rag-implementation-on-slack-platform-deno-experimenting-with-langchain-js
chaspy
0
340
SRE の考えをマネジメントに活かす / applying SRE ideas to management
chaspy
7
8.5k
RAGの簡易評価によるフィードバックサイクル実践 / Feedback cycle practice through simplified assessment of RAGs
chaspy
2
6.2k
定量データと定性評価を用いた技術戦略の組織的実践 / Systematic implementation of technology strategies using quantitative data and qualitative evaluation
chaspy
9
2.4k
エンジニアブランディングチームの KPI / KPI's of engineer branding team
chaspy
2
2.6k
「SLO Review」今やるならこうする / If I had to do the "SLO Review" again
chaspy
3
2.5k
開発者とともに作る Site Reliability Engineering / SREing with Developers
chaspy
10
9.3k
Other Decks in Technology
See All in Technology
LambdaWebFunctionsを試してみた / exploring-lambda-web-functions
koukihosaka
1
340
Active Record Connection Adaptersにおける長年の課題に再び取り組む
yahonda
0
150
AI駆動で「他アプリの音を加工できる」アプリを作った
satomasahiro2005
0
150
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
200
CTO Night|NotionのAIエージェントとFDE
kzkhykw1991
0
130
AIにシークレットを見せない、WSL2で安全な開発環境
yazm
0
300
hackers_champloo_2026_tidb
makocchi
0
160
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
3
540
Browser Spec: Testing Hotwire with Ruby
takahashim
1
120
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
190
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
340
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
200
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
GitHub's CSS Performance
jonrohan
1033
470k
We Are The Robots
honzajavorek
0
400
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Visualization
eitanlees
153
17k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
30 Presentation Tips
portentint
PRO
1
430
Technical Leadership for Architectural Decision Making
baasie
3
600
WENDY [Excerpt]
tessaabrams
14
40k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Transcript
/HJOY NSVCZΛಈ͔͢ LBXBTBLJSCपه೦-5େձ LPOEPUBLFTIJ
/HJOY NSVCZΛಈ͔͢ LBXBTBLJ SC पه೦-5େձ LPOEPUBLFTIJ
1SPpMF w LPOEPUBLFTIJ w 4PGUXBSF&OHJOFFS w 4JUF3FMJBCJMJUZ&OHJOFFS w DIBTQZ@ w
DIBTQZ w DIBTQZ w CMPHDIBTQZNF ༗څফԽதʂ
/HJOY w ܰྔͰߴ͍εέʔϥϏϦςΟΛތΔΦʔϓϯιʔεͷ )551αʔόͰ͢ɻʮ͑Μ͡Μ͑ͬ͘͢ʯͱಡΈ·͢ɻ OHJOY࣮ફೖOHJOY
/HJOY w ΞΫηε੍ޚ w 63*3FXSJUF w H[JQѹॖ w ϦόʔεϓϩΩγ w
-ϩʔυόϥϯε w ίϯςϯπΩϟογϡ w 44-λʔϛωʔγϣϯɺ)551ήʔτΣΠ w -ʢ5$1ʣϩʔυόϥϯε w ϝʔϧϓϩΩγ OHJOY࣮ફೖOHJOY
/HJOY w ΞΫηε੍ޚ w 63*3FXSJUF w H[JQѹॖ w ϦόʔεϓϩΩγ w
-ϩʔυόϥϯε w ίϯςϯπΩϟογϡ w 44-λʔϛωʔγϣϯɺ)551ήʔτΣΠ w -ʢ5$1ʣϩʔυόϥϯε w ϝʔϧϓϩΩγ OHJOY࣮ફೖOHJOY ͳΜͰͰ͖͗͢
NSVCZ w ΈࠐΈ͚ܰྔ3VCZ w 3VCZޓ w Γͳ͍Ϋϥεɾػೳ͋Γ w ݴޠ্༷ͷࠩҟ͋Γ ·ͭͱΏ͖ͻΖɹࠐ3VCZʮNSVCZʯͷͯ͢૯ूฤ
OHY@NSVCZ w IUUQTHJUIVCDPNNBUTVNPUPSZOHY@NSVCZ w OHJOYͷNSVCZ֦ு w OHY@MVBͷNSVCZ൛ w NPE@NSVCZͷOHJOY൛
/HJOYͷϑΣʔζͱϑοΫϙΠϯτ mruby nginx આ໌ mruby_server_rewrite_handle server rewrite αʔόίϯςΩετͷrewrite find config
֘͢Δlocation configΛ୳͢ mruby_rewrite_handler rewrite locationͷrewriteॲཧ post rewrite pre-access mruby_access_handler access ϑΝΠϧͷΞΫηε post-access try-files try_filesͷॲཧ mruby_content_handler content bodyͷੜ mruby_log_handler log ϩάॻ͖ࠐΈ )551SFRVFTUQSPDFTTJOHQIBTFTJO/HJOYIUUQXXXOHJOYHVUTDPNQIBTFT
ʢແବʹʣͬͨ͜ͱ w p[[CV[[ʹ(&5͢Δͱp[[CV[[ͷ݁ՌΛฦ͢ w SFEJSFDUʹ(&5͢Δͱp[[CV[[ʹϦμΠϨΫτ͢Δ IUUQTHJUIVCDPNDIBTQZWBHSBOUOHJOY
͜͜ʹp[[CV[[͕͋Δ͡ΌΖʁ r = Nginx::Request.new n = r.var.arg_n.to_i if n %
15 == 0 ans = "FizzBuzz" elsif n % 3 == 0 ans = "Fizz" elsif n % 5 == 0 ans = "Buzz" else ans = n end Nginx.echo(ans) ʢ΅͖ʣIJHIMJHIU͚ͬͨͲΠϚΠνͩͳʜ
OHJOYDPOG http { server { location /fizzbuzz { mruby_content_handler /usr/local/nginx/conf/fizzbuzz.rb;
} location /redirect { mruby_rewrite_handler_code ' Nginx.redirect "/fizzbuzz", Nginx::HTTP_MOVED_PERMANENTLY '; } } }
֬ೝ require 'net/http' (0..30).each{|n| Net::HTTP.get_print("192.168.33.100", "/fizzbuzz?n=#{n}") }
খωλ w OJMUP@JͬͯͳΜͰ͢Ͷɻɻɻ [vagrant@nginx ~]$ /usr/local/src/ngx_mruby/mruby/bin/mirb mirb - Embeddable Interactive
Ruby Shell > nil.to_i => 0
·ͱΊͱࠓޙ w OHJOYDPOG͕ΧΦεʹͳΔ߹ʹྑͦ͞͏ w JGσΟϨΫςΟϒ͋Δ͚ͲFMTFɺ"/% 03ͳ͍͠ w IUUQͱSVCZ෮श͠Α
5IBOLZPV