Nginx – Panoramica delle funzionalità di Nginx

Nginx offre una buon set di funzionalità di base, espandibili con moduli creati ad hoc. Ecco una panoramica delle funazionalità che Nginx offre.

Funzionalità http di base:

  • gestione di file statici, file di indice e autoindicizzazione;
  • reverse proxy accelerato (privo di cache), load balancing e fault tolerance;
  • supporto per FastCGI, con load balancing e fault tollerance;
  • architettura modulare – fra i filtri già inclusi gzip, byte ranges, chunked responses e filtro SSI; nel filtro SSI, sottorichieste multiple verso un proxy o a FastCGI sono gestite in parallelo;
  • supporto SSL e TLS SNI.

Funzionalità di IMAP/POP3 proxy server:

  • Redirezione degli utenti verso il backend IMAP/POP3 utilizzando un server HTTP esterno di autenticazione;
  • autenticazione utente per mezzo di un server di autenticazione http esterno e redirezione della connessione vero il backend SMTP.

Metodi di autenticazione:

  • POP3: POP3 USER/PASS, APOP, AUTH LOGIN PLAIN CRAM-MD5;
  • IMAP: IMAP LOGIN;
  • SMTP: AUTH LOGIN PLAIN CRAM-MD5;
  • Supporto SSL;
  • Supporto STARTTLS e STLS in modalità IMAP e POP3.

Sistemi Operativi Supportati

  • Linux 2.2, 2.4, 2.6 i386; Linux 2.6 amd64;
  • Solaris 8 i386; Solaris 9 i386 and sun4u; Solaris 10 i386;
  • FreeBSD 3.x, 4.x, 5.x, 6.x i386; FreeBSD 5.x, 6.x amd64;
  • MacOS X (10.4) PPC.

Architettura e scalabilità

  • Un processo master e diversi processi “worker”; i processi worker sono processi a thread singolo e sono eseguibili da utente non privilegiato;
  • Supporto per kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), rt signals (Linux 2.2.19+), /dev/poll (Solaris 7 11/99+), select, e poll;
  • Supporto per diverse funzionalità di kqueue incluse EV_CLEAR, EV_DISABLE (per la disabilitazione temporanea degli eventi), NOTE_LOWAT, EV_EOF, …;
  • Supporto per sendfile (FreeBSD 3.1+), sendfile (Linux 2.2+), sendfile64 (Linux 2.4.21+), e sendfilev (Solaris 8 7/01+);
  • supporto per accept-filter (FreeBSD 4.1+) e TCP_DEFER_ACCEPT (Linux 2.4+);
  • 10,000 connessioni http inattive keep-alive occupano circa 2.5M di memoria;
  • minimizzazione delle operazioni di copia dei dati.

Altre funzionalità http:

  • definizione di virtual server basati su name e IP;
  • interfaccia GET verso Memcached;
  • supporto per connessioni keep-alive e pipelined;
  • configurazione facile e flessibile;
  • riconfigurazione e upgrade a caldo senza interruzione di servizio;
  • formato di log personalizzabile, scrittura bufferizzata e rapido log rotation;
  • redirezione per codici di errore 4xx-5xx;
  • modulo di rewrite PCRE (Perl Compatible Regular Expressions);
  • access control based on client IP address and HTTP Basic authentication;
  • metodi PUT, DELETE, e MKCOL;
  • supporto per FLV (Flash video);
  • bandwidth throttling

Funzionalità sperimentali:

  • embdedded per;
  • modulo sperimentale che lavora con aio_read()/aio_write(), solo per FreeBSD;
  • supporto sperimentale per i thread, FreeBSD 4.x implementazione basate su rfork().