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().
