nginx
DESCRIPTION
Presentation about nginx web server, on Croatian.TRANSCRIPT
Luka Rajčević
Davor Tomala
Sadržaj
● Uvod● Karakteristike nginx-a● Arhitektura● Instalacija i konfiguracija● Sigurnost (najbolja praksa)
Uvod
● Nginx je Web server i reverse proxy server otvorenog koda
● Rusija 2002., Igor Sysoev● Treći najkorišteniji web server (2013.)
Postotak stranica koje koriste pojedini web server Poznate stranice koje koriste nginx
Karakteristike nginx-a
● Posluživanje statičnih web stranica– CGI i FastCGI posluživanje dinamičkog
sadržaja
● Podrška za SSL/TLS– HttpSslModule
● Podrška za virtualne hostove– Dijeljenje resursa između više različitih hostova
● Mogućnost kompresije response-a sa servera– gzip
● Fault tolerance
● Jednostavna kontrola pristupa– nginx_http_access_module
Jednostavna pravila za kontrolu pristupa sadržaju
Reverse proxy
● tip proxy servera koji se, za razliku od standardnog (forward) proxy-ja postavlja "ispred" web servera
● svaki zahtjev prema web serveru se preusmjerava na reverse proxy
Prikaz reverse proxy servera
● Koja je svrha reverse proxy-ja?– Preusmjeravanje (distribucija) zahtjeva prema
više servera u svrhu balansiranja količine zahtjeva (load balancing)
– Osiguravanje "unutarnjih" servera
– Skrivanje podataka o pravom serveru
Arhitektura
● Process- i thread-based model (Apache)
● Event-based model (nginx)
– modular, event-driven, asynchronous, single-threaded
● Visoko-efikasni “run-loop”
Struktura koda
● Worker
– jezgreni i funkcionalni moduli● core modules, event modules, phase handlers, variable
handlers, protocols, filters, upstreams, load balancers, …
● ne podržava dinamičko učitavanje modula
– potrebno ih je kompilirati s jezgrom
Worker
● Čitanje sa/pisanje u socket, procesiranje HTTP requestova/responseova
● Dobro skaliranje s više-jezgrenim arhitekturama
● CPU (TCP/IP, SSL, kompresija)
– #worker = #jezgri
● I/O diska (posluživanje podataka, proxyiranje)
– #worker = 1,5 – 2 * #jezgri
Uloge procesa
● Master + n*worker (+cache loader, +cache manager)
– single-threaded (nginx v1.x)
● Komunikacija shared-memory mehanizmima
● Master pokrenut kao root, ostali kao neprivilegirani
Uloge procesa
● Master
– Čitanje i validiranje konfiguracije
– Kreiranje, spajanje i zatvaranje socketa
– Pokretanje, gašenje i održavanje konf. # worker procesa
– Rekonfiguriranje bez prekidanja procesa
– Kontrola neprekidnih binarnih nadogradnji (new ili rollback)
– Ponovno otvaranje log-ova
– Kompiliranje ugrađenih Perl skripti
Uloge procesa
● Worker
– Prihvaćanje, obrada, procesiranje konekcija
– Reverse proxying i filtriranje
– + sve što nginx nudi
● Cache loader
– Puni memoriju meta-podacima s diska
● Cache manager
– Odgovoran za istek i poništenje cache-a
Arhitektura nginx-a