nginx

14
Luka Rajčević Davor Tomala

Upload: luka-rajcevic

Post on 15-Jun-2015

329 views

Category:

Documents


1 download

DESCRIPTION

Presentation about nginx web server, on Croatian.

TRANSCRIPT

Page 1: Nginx

Luka Rajčević

Davor Tomala

Page 2: Nginx

Sadržaj

● Uvod● Karakteristike nginx-a● Arhitektura● Instalacija i konfiguracija● Sigurnost (najbolja praksa)

Page 3: Nginx

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

Page 4: 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

Page 5: Nginx

● Mogućnost kompresije response-a sa servera– gzip

● Fault tolerance

● Jednostavna kontrola pristupa– nginx_http_access_module

Jednostavna pravila za kontrolu pristupa sadržaju

Page 6: Nginx

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

Page 7: Nginx

● 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

Page 8: Nginx

Arhitektura

● Process- i thread-based model (Apache)

● Event-based model (nginx)

– modular, event-driven, asynchronous, single-threaded

● Visoko-efikasni “run-loop”

Page 9: Nginx

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

Page 10: Nginx

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

Page 11: Nginx

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

Page 12: Nginx

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

Page 13: Nginx

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

Page 14: Nginx

Arhitektura nginx-a