Nginx
Nginx (Engine X) è un Web Server utilizzabile anche come reverse proxy che ultimamente ha fatto molto parlare di sé per la sua semplicità di configurazione, le sue alte performance e la sua leggerezza.
A fine di novembre, stando alle statistiche di NetCraft, i server che utilizzano Nginx sono aumentati di oltre 3.5 milioni in 3 mesi, portando questo prodotto alla 4a posizione dei Web Server più utilizzati.
Installazione:
Attualmente sono disponibili pacchetti precompilati per quasi la totalità delle distribuzioni Gnu/Linux , tuttavia molti di essi non sono aggiornati e non contengono tutte le feature aggiunte con l’ultima versione.
Procederemo quindi con la compilazione diretta dei sorgenti scaricabili direttamente dal sito di nginx: http://wiki.nginx.org/NginxInstall .
$ wget http://sysoev.ru/nginx/nginx-0.7.64.tar.gz
$ tar -zxvf nginx-0.7.64.tar.gz
$ cd nginx-0.7.64
Per sistemi Debian i corrispondenti pacchetti per risolvere le dipendenze basilari di nginx sono i seguenti:
libc6 libpcre3 libpcre3-dev libpcrecpp0 libssl0.9.8 libssl-dev
zlib1g zlib1g-dev lsb-base
Le diverse opzioni di configurazione di NginX sono disponibili nel readme o http://wiki.nginx.org/NginxInstallOptions.
$ ./configure –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-log-path=/var/log/nginx/access.log –with-http_ssl_module
(N.d.R: il comando precedente va in realtà tutto su una riga)
$ make
$ su
# make install
Attenzione, di default configure abilita l’http rewrite ma ha bisogno della libreria PCRE (ultima versione: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gz ) , se non necessitate di questa funzione basta aggiungere l’opzione –without-http_rewrite_module a configure.
Configurazione:
Scriviamo da 0 un file di configurazione basilare, e salviamolo in /etc/nginx/nginx.conf:
——————-
user nginx nginx; # Assegna un utente ed un gruppo ai processi di nginx
worker_processes 2; # Numero di processi massimi attivabili
error_log logs/error.log; # Dove salvare gli error log
pid logs/nginx.pid; # Dove salvare il file PID per nginx
worker_rlimit_nofile 8192; # Il numero massimo di FD che può aprire un processo
events {
worker_connections 4096; # Massimo numero di connessioni per processo
}
http {
include conf/mime.types;
default_type application/octet-stream;
log_format main ‘$remote_addr – $remote_user [$time_local] $status ‘
‘”$request” $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘; #formato in cui verranno salvati i log
access_log logs/access.log main; #Dove salvare gli access log
sendfile on;
tcp_nopush on;
server_names_hash_bucket_size 128;
server { # Definisce automaticamente un vhost
listen 80; # Porta in cui nginx si metterà in ascolto
server_name pippo.it www.pippo.it; # DomainName del virtual host
access_log logs/pippo.it.access.log main; #Dove salvare gli access log
root html;
location / { #Directory di Root
index index.html index.htm index.php; # File utilizzati come Index
}
}
———–
Lanciare il comando:
# /usr/local/nginx/sbin/nginx
In questo modo Nginx si metterà in ascolto sulla porta 80 per il dominio pippo.it .
L’esempio è facilmente adattabile ad altri contesti, cambiando pippo.it col proprio nome di dominio.
Nei prossimi articoli introdurremo ulteriori concetti e configurazioni più elaborate.