Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Nginx + mrubyを動かす / run the ngx_mruby
Takeshi Kondo
May 23, 2018
Technology
0
680
Nginx + mrubyを動かす / run the ngx_mruby
Takeshi Kondo
May 23, 2018
Tweet
Share
More Decks by Takeshi Kondo
See All by Takeshi Kondo
Who owns the Service Level?
chaspy
5
4.8k
多様な働き方を支える Working Agreements / Working agreements that support diverse work styles
chaspy
1
810
SRE を実現するための組織マネジメント / Management to achieve SRE
chaspy
3
3.5k
サービス立ち上げ期におけるSREの取り組み / SRE efforts in the service launch phase
chaspy
0
520
Implementing Site Reliability Engineering in your organization
chaspy
6
2.1k
How to measure "Site Reliability Engineering"
chaspy
6
2k
Site Reliability Engineering における 重要領域とパフォーマンス指標の提案 / Performance Indicators for SRE
chaspy
1
1.8k
Metric-Driven Decision Making with Custom Prometheus Exporter
chaspy
1
920
想定外の負荷を乗り切ったオンライン教育サービスの裏側 / How We Overcame the COVID-19 Crisis
chaspy
7
5k
Other Decks in Technology
See All in Technology
Amplifyで Webアプリケーションの 堅固な土台をサクッと構築する方法
kawasakiteruo
0
220
聊聊 Cgo 的二三事
david74chou
0
330
増田亨さんによる 「設計の考え方とやり方」勉強会オープニング
tsuyok
0
210
ソフトウェアアーキテクチャの基礎: Software Architecture in a Nutshell
snoozer05
28
8.8k
セキュアなTerraformの使い方 ~ 機密情報をコードに含めず環境構築するにはどうしたらいいの?
harukasakihara
9
1.5k
DevRel組織についての考察
taijihagino
PRO
0
120
Microsoft Data Analytics trends : ”Lakehouse” , ”Data Mesh"
ryomaru0825
2
130
eBPF-based Container Networking
johnlin
2
1.1k
eBPFで実現するコンテナランタイムセキュリティ / Container Runtime Security with eBPF
tobachi
PRO
5
1.7k
Step-by-Step MLOps and Microsoft Products
shisyu_gaku
1
550
Sysdig Secure/Falcoの活用術! ~Kubernetes基盤の脅威モデリングとランタイムセキュリティの強化~
owlinux1000
0
240
サイバー攻撃を想定したクラウドネイティブセキュリティガイドラインとCNAPP及びSecurity Observabilityの未来
syoshie
1
1.1k
Featured
See All Featured
Building Your Own Lightsaber
phodgson
95
4.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
236
1.1M
Visualization
eitanlees
125
12k
The Illustrated Children's Guide to Kubernetes
chrisshort
18
40k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
100
6k
The MySQL Ecosystem @ GitHub 2015
samlambert
239
11k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
119
28k
4 Signs Your Business is Dying
shpigford
169
20k
Code Review Best Practice
trishagee
44
9.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
351
21k
No one is an island. Learnings from fostering a developers community.
thoeni
9
1.3k
Teambox: Starting and Learning
jrom
123
7.7k
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