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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
110
SRE NEXT CfP チームが語る 聞きたくなるプロポーザルとは / Proposals by the SRE NEXT CfP Team that are sure to be accepted
chaspy
2
1.8k
Slack Platform(Deno) での RAG 実装 - LangChain(js) を使ってみた / rag-implementation-on-slack-platform-deno-experimenting-with-langchain-js
chaspy
0
330
SRE の考えをマネジメントに活かす / applying SRE ideas to management
chaspy
7
8.4k
RAGの簡易評価によるフィードバックサイクル実践 / Feedback cycle practice through simplified assessment of RAGs
chaspy
2
6.1k
定量データと定性評価を用いた技術戦略の組織的実践 / 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.2k
Other Decks in Technology
See All in Technology
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
640
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
1
280
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
110
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
1
240
Snowflakeで実現する全社横断の顧客の声(VOC)分析・活用基盤@Snowflake World Tour Tokyo 2026
yuto16
0
200
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
610
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
4
1.1k
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
1
2.7k
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
760
Screen Lens - 今見てる画面を翻訳する
komagata
0
260
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
14
8.1k
Sigmaで作る業務アプリ
kazushiro_honma
0
120
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
Chasing Engaging Ingredients in Design
codingconduct
0
310
The Pragmatic Product Professional
lauravandoore
37
7.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
390
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
480
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Believing is Seeing
oripsolob
1
220
Into the Great Unknown - MozCon
thekraken
41
2.7k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
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