Nginx – Compilare e installare Nginx e i moduli base

Nginx offre diverse opzioni in fase di compilazione; compilare al meglio Nginx e scegliere solo le funzionalità che interessano possono rendere Nginx ancora più scattante.

Alcune distribuzioni Linux e di varianti BSD contengono Nginx fra i propri repository di pacchetti pronti da installare. Fate attenzione dal momento che molto spesso questi pacchetti contengono versioni datate di Nginx. Compilare Nginx dai sorgenti è sicuramente il procedimento raccomandato dal momento che si ha la possibilità di scegliere i moduli da attivare ed è un processo relativamente semplice.

Procedura di compilazione Nginx

  • Scaricare il codice sorgente
  • Decomprimere il sorgente con il comando tar -xzvf nginx-0.5.30.tar.gz
  • Posizionarsi nella cartella appena estratta con cd nginx-0.5.30/ e lanciare il comando ./configure; eventualmente scegliere i parametri di compilazione dalla lista riportata di seguito ed aggiungerli in coda al comando (es. ./configure --http-log-path=/dev/telegrafo)
    • Nel caso il comando ./configure non sia riuscito a trovare le librerie PCRE, apparirà un messaggio di questo tipo:

      ./configure: error: the HTTP rewrite module requires the PCRE library.
      You can either disable the module by using --without-http_rewrite_module
      option, or install the PCRE library into the system, or build the PCRE library
      statically from the source with nginx by using --with-pcre=path option.

      Dovrà quindi essere necessario indicare la posizione delle librerie, as esempio ./configure --with-pcre=/usr/lib/pcre; se invece le librerie non sono installate sul sistema, è sufficiente scaricare il pacchetto, decomprimerlo ed infine indicare la cartella contente la libreira con il parametro --with-pcre=.

      • Procedere alla compilazione e alla installazione del pacchetto con il comando make && make install

      Nginx e PCRE

      Nginx utilizza la libreria PCRE (Perl Compatible Regular Expressions) ed è quindi necessario che sia presenta all’interno del sistema in fase di compilazione. Se il comando ./configure non riesce a trovarla, è possibile indicare la cartella in cui sono presenti i sorgenti PCRE con il parametro --with-pcre=mia/cartella/pcre; nel caso non si trovino le librerie o siano da installare, è possibile procedere al download della libreria dal sito ufficiale, decomprimere il pacchetto in una cartella dedicata e quindi lanciare il comando ./configure --with-pcre=/usr/lib/pcre

      Parametri di configurazione Nginx

      A differenza di Apache, Nginx permette la scelta dei moduli da attivare esclusivamente in fase di compilazione; sempre in fase di compilazione è possibile specificare alcuni parametri che potranno essere cambiati dopo la fase di compilazione intervenendo nel file nginx.conf.

      configure supporta le seguenti opzioni:

      • --prefix=<path> – Il percorso relativo verso il quale tutti i path di Nginx convergono; se non specificato, viene utilizzato il valore preimpostato /usr/local/nginx.
      • --sbin-path=<path> – Il percorso per gli eseguibili Nginx; se non specificato viene utilizzato il valore preimpostato <prefix>/sbin/nginx.
      • --conf-path=<path> – Il percorso utilizzato per la lettura dei file di configurazione di Nginx a meno che non venga specificato il parametro –c da riga di comando; se non specificato, viene utilizzato il valore predefinito <prefix>/conf/nginx.conf.
      • --pid-path=<path> – Il percorso nel quale verrà creato il file PID; se non specificato, viene utilizzato il valore predefinito <prefix>/logs/nginx.pid.
      • --lock-path=<path> – Il percorso nel quale viene creato il file nginx.lock; se non specificato, viene utilizzato il valore predefinito <prefix>/logs/nginx.lock.
      • --error-log-path=<path> – Il percorso del file di log degli errori, se non specificato tramite il parametro “error_log” nel file nginx.conf; se non specificato, viene utilizzato il valore predefinito <prefix>/logs/error.log.
      • --http-log-path=<path> – Il percorso del file di log degli accessi, se non specificato tramite il parametro “access_log” nel file nginx.conf; se non specificato, viene utilizzato il valore predefinito <prefix>/logs/access.log.
      • --user=<user> – L’utente proprietario del processo Nginx, se non altrimenti specificato nel file nginx.conf tramite il parametro “user; se non specificato, viene utilizzato il valore predefinito “nobody”.
      • --group=<group> – Il gruppo utilizzato di default per mandare in esecuzione Nginx se non altrimenti specificato nel file di configurazione nginx.conf.
      • --builddir=DIR – Imposta la cartella utilizzata per il build di Nginx
      • --with-rtsig_module – Abilita il modulo rtsi
      • --with-select_module --without-select_module – Abilita o disabilita il modulo select. Questo modulo è abilitato di default se configure non ha individuato un metodo più appropriato quale kqueue, epoll, rtsig o /dev/poll.
      • –with-poll_module –without-poll_module – Abilita o disabilita il modulo pool. Questo modulo è abilitato di default se configure non ha individuato un metodo più appropriato quale kqueue, epoll, rtsig o /dev/.
      • --with-http_ssl_module – Abilita il modulo ngx_http_ssl_module. Abilita il supporto SSL e la possibilità di gestire richieste https. Richiede OpenSSL (libssl-dev su Debian).
      • --with-http_realip_module – Abilita ngx_http_realip_module
      • --with-http_addition_module – Abilita ngx_http_addition_module
      • --with-http_sub_module – Abilita ngx_http_sub_module
      • --with-http_dav_module – Abilita ngx_http_dav_module
      • --with-http_flv_module – Abilita ngx_http_flv_module
      • --with-http_stub_status_module – Abilita la pagina “server status”
      • --without-http_charset_module – Disabilita ngx_http_charset_module
      • --without-http_gzip_module – Disabilita ngx_http_gzip_module. Richiede zlib per il suo corretto funzionamento.
      • --without-http_ssi_module – Disabilita ngx_http_ssi_module
      • --without-http_userid_module – Disabilita ngx_http_userid_module
      • --without-http_access_module – Disabilita ngx_http_access_module
      • --without-http_auth_basic_module – Disabilita ngx_http_auth_basic_module
      • --without-http_autoindex_module – Disabilita ngx_http_autoindex_module
      • --without-http_geo_module – Disabilita ngx_http_geo_module
      • --without-http_map_module – Disabilita ngx_http_map_module
      • --without-http_referer_module – Disabilita ngx_http_referer_module
      • --without-http_rewrite_module – Disabilita ngx_http_rewrite_module. Richiede PCRE.
      • --without-http_proxy_module – Disabilita ngx_http_proxy_module
      • --without-http_fastcgi_module – Disabilita ngx_http_fastcgi_module
      • --without-http_memcached_module – Disabilita ngx_http_memcached_module
      • --without-http_limit_zone_module – Disabilita ngx_http_limit_zone_module
      • --without-http_empty_gif_module – Disabilita ngx_http_empty_gif_module
      • --without-http_browser_module – Disabilita ngx_http_browser_module
      • --without-http_upstream_ip_hash_module – Disabilita ngx_http_upstream_ip_hash_module
      • --with-http_perl_module – Abilita ngx_http_perl_module
      • --with-perl_modules_path=PATH – Imposta il percorso dei moduli Perl
      • --with-perl=PATH – Importa il percorso per i file binari Perl
      • --http-client-body-temp-path=PATH – Set path to the http client request body temporary files. If not set, defaults to <prefix>/client_body_temp
      • --http-proxy-temp-path=PATH – Imposta il percorso per il file temporanei del proxy http; se non specificato, viene impostato al valore di default <prefix>/proxy_temp
      • --http-fastcgi-temp-path=PATH – Imposta il percorso per i file temporanei fastcgi; se non specificato, viene impostato al valore di default <prefix>/fastcgi_temp
      • --without-http – Disabilita il server HTTP
      • --with-mail – Abilita il modulo di proxy IMAP4/POP3/SMT
      • --with-mail_ssl_module – Abilita ngx_mail_ssl_module
      • --with-cc=PATH – Imposta il percorso del compilatore C
      • --with-cpp=PATH – Imposta il percorso del preprocessore
      • --with-cc-opt=OPTIONS – Parametri addizionali che saranno aggiunti alla variabile CFLAGS. Se si utilizza la libreria PCRE in FreeBSD, è necessario indicar
      • --with-cc-opt="-I /usr/local/include" – Se si utilizza select() ed è necessario incrementare il numero dei descrittori dei file, deve essere specificato: –with-cc-opt=”-D FD_SETSIZE=2048″.
      • --with-ld-opt=OPTIONS – Parametri addizionali passati al linker. Se si utilizza la libreria PCRE in FreeBSD, è necessario indicare –with-ld-opt=”-L /usr/local/lib”.
      • --with-cpu-opt=CPU – Compilazione per una specifica CPU; i valori consentiti: pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64
      • --without-pcre – Disabilita l’utilizzo delle librerie PCRE. Disabilita anche il modulo http rewrite.
      • --with-pcre=DIR – Imposta il percorso dei sorgenti della libreria PCRE.
      • --with-pcre-opt=OPTIONS – Imposta opzioni addizionali per la compilazione di PCRE.
      • --with-md5=DIR – Impostazione del percorso per i sorgenti della libreria md5.
      • --with-md5-opt=OPTIONS – Imposta opzioni addizionali per la compilazione della libreria md5.
      • --with-md5-asm – Utilizza il sorgente asm per la libreria md5.
      • --with-sha1=DIR – Imposta il percorso dei sorgenti per la libreria sha1.
      • --with-sha1-opt=OPTIONS – Imposta opzioni addizionali per la compilazione della libreria sha1.
      • --with-sha1-asm – Utilizza il sorgente asm per la libreria sha1.
      • --with-zlib=DIR – Imposta il percorso del sorgente della libreria zlib.
      • --with-zlib-opt=OPTIONS – Imposta opzioni addizionali per la compilazione della libreria zlib.
      • --with-zlib-asm=CPU – Utilizza i sorgenti assembler per la libreria zlib, ottimizzata per una specifica CPU; i parametri validi sono: pentium, pentiumpro
      • --with-openssl=DIR – Imposta il percorso per i sorgenti della libreria OpenSSL
      • --with-openssl-opt=OPTIONS – Imposta parametri addizionali per la compilazione della libreria OpenSSL
      • --with-debug – Abilita il logging a livello di debug
      • --add-module=PATH – Aggiunge i moduli sviluppati da terze parti trovati nella directory specificata dal valore del pametro PATH

      Le opzioni possono variare fra le differenti versioni; meglio dare un occhio a ./configure –help per la lista dei parametri da utilizzare per la versione in uso.

      Esempio (da riportare su una sola riga):

      ./configure
      --sbin-path=/usr/local/nginx/nginx
      --conf-path=/usr/local/nginx/nginx.conf
      --pid-path=/usr/local/nginx/nginx.pid
      --with-http_ssl_module
      --with-pcre=../pcre-4.4
      --with-zlib=../zlib-1.1.3

      Esempio su Ubuntu / Debian con libgcrypt11-dev, libpcre3-dev e libssl-dev installati (scegliere –with-md5 OPPURE –with-sha1, ma non entrambi; su Debian e Ubuntu dovrebbero puntare a /usr/lib)

      ./configure --with-openssl=/usr/lib/ssl/ --with-md5=/usr/lib

      Risorse esterne