$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Intro to Nginx
Search
Martin Loy
July 06, 2013
Technology
2
200
Intro to Nginx
slides from my palestra @fisl14 on Porto Alegre
Martin Loy
July 06, 2013
Tweet
Share
More Decks by Martin Loy
See All by Martin Loy
NGINX for Fun & Profit
tombar
1
190
Other Decks in Technology
See All in Technology
レガシーシステム刷新における TypeSpec スキーマ駆動開発のすゝめ
tsukuha
4
870
巨大モノリスのリプレイス──機能整理とハイブリッドアーキテクチャで挑んだ再構築戦略
zozotech
PRO
0
400
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
9.7k
Dify on AWS の選択肢
ysekiy
0
120
Data Hubグループ 紹介資料
sansan33
PRO
0
2.3k
学術的根拠から読み解くNotebookLMの音声活用法
shukob
0
500
都市スケールAR制作で気をつけること
segur
0
210
pmconf 2025 大阪「生成AI時代に未来を切り開くためのプロダクト戦略:圧倒的生産性を実現するためのプロダクトサイクロン」 / The Product Cyclone for Outstanding Productivity
yamamuteki
3
3k
DDD x Microservice Architecture : Findy Architecture Conf 2025
syobochim
13
6.5k
『ソフトウェア』で『リアル』を動かす:クレーンゲームからデータ基盤までの統一アーキテクチャ / アーキテクチャConference 2025
genda
0
1.9k
AIで加速する次世代のBill Oneアーキテクチャ〜成長の先にある軌道修正〜
sansantech
PRO
1
140
マルチドライブアーキテクチャ: 複数の駆動力でプロダクトを前進させる
knih
0
12k
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Embracing the Ebb and Flow
colly
88
4.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
67k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Docker and Python
trallard
46
3.7k
The Language of Interfaces
destraynor
162
25k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Transcript
Just a friendly disclaimer before we start.
Que e isso cara? #Fisl14, @MartinLoy
$ ls -l /palestras/nx/topics/* - apropos nginx - diff apache
nginx - config && syntax; - locations - proxy module - upstream module - using (php|python|ruby|websockets|*) - good practices && debugging tips - extras
Rise up!
$ apropos nginx - Small, powerful, scalable web|proxy server. -
Russian engineering. - BSD license. - Market Share 14.3% - It's pronounced “engine X” - Also an e-mail (imap|pop3) proxy.
$ diff apache nginx Apache prefork|worker|events* Modular (a2enmod) .htaccess Nginx
Async I/O, Event Loop Recompile to add* Configuration syntax & Rewrite Rules
Config && syntax;
$ man nginx.conf 3 main contexts http | server |
location variables and methods are lowercases and only support a-z and underscore set $var foo; set_header X-Example bar; http://wiki.nginx.org/Http{X}Module#{method}
@ http://wiki.nginx.org/HttpCoreModule#server_name server { server_name example.com; server_name a.com b.com; server_name
*.test.com; server_name _; }
@ http://wiki.nginx.org/HttpCoreModule#listen server { server_name *.test.com; listen localhost:8000; listen 127.0.0.1:443
ssl; listen 8000 default; listen *:8000; listen unix:/tmp/nginx.sock; }
@ http://wiki.nginx.org/HttpCoreModule#root server { server_name *.test.com; listen 127.0.0.1:8000; root /var/www/test;
access_log /var/log/nginx/acces.log; }
Locations
@ http://wiki.nginx.org/HttpCoreModule#location location = /admin { ... } /admin location
/ { ... } /index.html /example/test.html /match.any location /docs { ... } /docs/example.html location ^~ /images { ... } /images/avatar.gif location ~* (jpg|gif|png) { ... } /docs/1.gif
$ locations > mod_rewrite location /imgs { if ($http_user_agent ~
MSIE) { rewrite ^ http://disney.com? permanent; } try_files $uri $uri/ /error.gif; }
Dynamic Content
$ Proxy Module location / { proxy_set_header Host $host; proxy_pass
http://myBackend/app; proxy_redirect /app /; proxy_read_timeout 30s; } @ http://wiki.nginx.org/HttpProxyModule
Caching with nginx location / { proxy_pass http://myBackend; proxy_cache_valid 200
301 302 2h; proxy_cache_valid any 1m; proxy_cache_bypass $nocache_cookie; proxy_cache_key "$user_cookie$host$uri"; proxy_ignore_headers Cache-Control; } proxy_cache_use_stale error | timeout | updating | http_500 | http_502 | http_503 | http_404
$ Upstream Module upstream myBackendFarm { server 10.0.1.1 weight=2; server
10.0.1.2 weight=10 keepalive=5; server 10.0.1.3 down; server 10.0.1.4 max_fails=3 fail_timeout=5s; server 10.0.1.5 backup; [ fair | hash | sticky | + ] } @ http://wiki.nginx.org/HttpUpstreamModule
$ use (php|python|ruby|*) proxy_pass | fastcgi_pass | uwsgi_pass .php php-fpm
5.3.2+ .py wsgi, passenger, gunicorn. .rb rack, passenger, unicorn, thin, goliath. .* (http|socket)
$ nginx && websockets location /chat { proxy_pass http://myBackend; proxy_http_version
1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } @ http://nginx.org/en/docs/http/websocket.html
Good Practices & Debugging tips
Configuration Tips $ /etc/init.d/nginx configtest # use some extra headers
to help you out add_header X-foo $var; # nginx built in debug_connection debug_connection 127.0.0.1; @ http://wiki.nginx.org/IfIsEvil
@ http://wiki.nginx.org/HttpLogModule#log_format log_format multidomain-multiproxy-geoip $host - { combined apache log
format } - Cache: $upstream_cache_status $upstream_status $upstream_response_time $upstream_addr - Geo: $geoip_city_country_code $geoip_region
Cli tools $ tail -f /var/log/nginx/*error.log $ w3m -dump_head http://myBackend/img/a.gif
Content-Type: image/gif Last-Modified: Fri, 28 Jun 2013 15:57:46 GMT Cache-Control: max-age=864000 ETag: "e4f5659cd8bfb08fec2dc98e8450c414" Expires: Wed, 10 Jul 2013 07:24:03 GMT $ wget http://127.0.0.1/nx_stub -O - Active connections: 2676 server accepts handled requests 84315896 84315896 189890279 Reading: 204 Writing: 13 Waiting: 2459
@ http://wiki.nginx.org/3rdPartyModules
# Cache Backends redis, memcache, mongo, purge # Security mod_security,
naxsi, http pam # Media image filter, mp4, thumb extractor # Misc php, form parser, rdd, download $ ls -l /nx/3rdPartyMods/* # Optimizers pagespeed, css, js min # Monitoring statsd, sflow, syslog # Real FUN ! lua, perl, python, javascript # more awesomeness openresty, upload, push/comet
ASK me Anything NGINX related! & GET /some-alfajores
contact me @martinloy | github.com/tombar
@martinloy github.com/tombar