Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Intro to Nginx
Search
Martin Loy
July 06, 2013
Technology
200
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Intro to Nginx
slides from my palestra @fisl14 on Porto Alegre
Martin Loy
July 06, 2013
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
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
250
Data + AI Summit 2026 イベントレポート: 「AIがビジネスで意思決定するデータ基盤」へ
nek0128
0
260
Control Planeで育てるBtoB SaaSの認証基盤 - SRE NEXT 2026
pokohide
1
2.6k
kintone の AI コワーカーを、 Anthropic にエージェントを"ホストさせて"作った話 #devkinmeetup
sugimomoto
0
110
壊して学ぶAWS CDK: そのcdk deployで消えるもの、残るもの
k_adachi_01
1
370
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
130
Claude Code公式skillで 自分の仕事を少しずつ手放そう!(Claude Code開発ノウハウ大公開スペシャル by クラスメソッド)
kaym
1
480
AI Agent SaaS を支える自社仮想化基盤への挑戦と実運用 / ai-agent-saas-virtualization
flatt_security
3
4.1k
AmplifyHostingConstructからSSRフレームワークのためのホスティング設計を考察する/amplify-hosting-construct
fossamagna
1
210
アップデートで何が変わった?デモで学んで使いこなすIBM Bob2.0
muehara
0
110
SoccerMaster: A Vision Foundation Model for Soccer Understanding
kzykmyzw
0
130
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
4
4.5k
Featured
See All Featured
The Invisible Side of Design
smashingmag
301
52k
Technical Leadership for Architectural Decision Making
baasie
3
440
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
BBQ
matthewcrist
89
10k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.1k
We Have a Design System, Now What?
morganepeng
55
8.2k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
450
ラッコキーワード サービス紹介資料
rakko
1
3.9M
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
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