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
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
はじめての MagicPod生成AI機能 機能紹介から活用方法まで
magicpod
0
100
コミュニティ・勉強会を作るのは目的じゃない
ohmori_yusuke
0
220
最初の一歩を踏み出せなかった私が、誰かの背中を押したいと思うようになるまで / give someone a push
mii3king
0
160
ネットワーク運用を楽にするAWS DevOps Agent活用法!! / 20260421 Masaki Okuda
shift_evolve
PRO
2
210
国内外の生成AIセキュリティの最新動向 & AIガードレール製品「chakoshi」のご紹介 / Latest Trends in Generative AI Security (Domestic & International) & Introduction to AI Guardrail Product "chakoshi"
nttcom
3
1.2k
Standards et agents IA : un tour d’horizon de MCP, A2A, ADK et plus encore
glaforge
0
170
昔はシンプルだった_AmazonS3
kawaji_scratch
0
340
コードや知識を組み込む / Incorporate Code and Knowledge
ks91
PRO
0
160
20年前の「OSS革命」に学ぶ AI時代の生存戦略
samakada
0
440
みんなの「データ活用」を支えるストレージ担当から持ち込むAWS活用/コミュニティー設計TIPS 10選~「作れる」より、「続けられる」設計へ~
yoshiki0705
0
250
No Types Needed, Just Callable Method Check
dak2
1
1.3k
AzureのIaC管理からログ調査まで、随所に役立つSkillsとCustom-Instructions / Boosting IaC and Log Analysis with Skills
aeonpeople
0
240
Featured
See All Featured
Chasing Engaging Ingredients in Design
codingconduct
0
170
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
53k
Building Applications with DynamoDB
mza
96
7k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
500
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
RailsConf 2023
tenderlove
30
1.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
260
Between Models and Reality
mayunak
3
270
My Coaching Mixtape
mlcsv
0
100
Believing is Seeing
oripsolob
1
110
Facilitating Awesome Meetings
lara
57
6.8k
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