2016-04-11 28 views
16

Introduzione

Da Nginx versione 1.9.11 e upwarts, viene introdotta una nuova funzionalità: moduli dinamici.

Con i moduli dinamici, è possibile caricare facoltativamente file di oggetti condivisi separati in fase di runtime come moduli, sia moduli di terze parti che alcuni moduli NGINX nativi. (source)
Come abilitare modulo dinamico con un'installazione esistente Nginx

mia configurazione e il problema

Ho NGINX installato dalla linea principale (attualmente 1.9.14) quindi è in grado di utilizzare moduli dinamici. Essa ha anche il modulo che voglio dynamicly abilitati:

nginx -V 
nginx version: nginx/1.9.14 
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1) 
built with OpenSSL 1.0.1f 6 Jan 2014 
TLS SNI support enabled 
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules ... --with-http_geoip_module=dynamic ... 

Annotare la --with-http_geoip_module=dynamic che carica il modulo ho bisogno (dinamico). Purtroppo manca la documentazione (alcuni dettagli) e non riesco a configurarlo.
Ho un'installazione NGINX esistente (non dalla fonte). Ma per quanto posso capire ho solo bisogno di compilare il modulo, posizionare il file del modulo generato nella giusta cartella NGINX e abilitarlo nel file di configurazione.

Quello che ho provato finora

Ho provato questo su una macchina diversa (con la stessa configurazione, ma non una macchina di produzione), ma non vedo il file ngx_http_geoip_module.so. I comandi che ho usato:

wget http://nginx.org/download/nginx-1.9.14.tar.gz 
tar -xzf nginx-1.9.14.tar.gz 
cd nginx-1.9.14/ 
./configure --with-http_geoip_module=dynamic 

Le domande

  • E 'un problema che provo ad installare il modulo su un sistema che ha Nginx installato non dalla fonte?
  • Perché non c'è nessun file .so generato dai miei comandi?

risposta

14

ho avuto la stessa domanda, e la risposta di @vladiastudillo era il pezzo mancante di cui avevo bisogno.

aggiungere prima il nginx repo stabili:

sudo add-apt-repository ppa:nginx/stable 

Poi eseguire l'aggiornamento apt:

sudo apt-get update 

e ottenere il modulo di nginx GeoIP:

sudo apt-get install nginx-module-geoip 

Questo scaricherà e caricare il modulo a /usr/lib/nginx/modules


Per caricare il modulo nginx,

aperta nginx.conf:

sudo nano /etc/nginx/nginx.conf 

add Aggiungi al di sotto nel contesto principale:

load_module "modules/ngx_http_geoip_module.so"; 

Il modulo sarà caricato, quando si ricarica la configurazione o riavviare nginx.

Per "scaricare" un modulo in modo dinamico, commentare o rimuovere la relativa direttiva load_module e ricaricare la configurazione di nginx.

+0

Ho bisogno di reinstallare nginx dal ppa? O lo standard NGINX di Ubuntu è sufficiente? – yoano

+0

se NGINX è costruito con moduli dinamici non è necessario reinstallarlo. Per verificare i moduli disponibili, digitare 'nginx -V' e verificare la stringa dinamica. – miyuru

+0

Dov'è il contesto principale? –

0

Ho avuto lo stesso problema, è necessario installare il lib http_geoip_module per la versione Ubuntu con:

$ sudo apt-get install nginx-modulo-geoip

+1

Ho cercato il tuo comando, ma ho ottenuto "Lettura elenco dei pacchetti ... Fatto Generazione dell'albero delle dipendenze Lettura informazioni sullo stato ... Fatto E: Impossibile trovare il pacchetto nginx-modulo-geoip" – yoano

4

trovato che questo è un po 'diverso su Amazon Linux 2.016,09, Amazon Linux 2.016,03 dopo aver eseguito l'aggiornamento yum.

È possibile confermare questo prima del tempo utilizzando questo comando sul istanza EC2 sudo yum search nginx-mod-http-geoip e vedrete un N/S matched: nginx-mod-http-geoip voce nella risposta con le specifiche di nginx-mod-http-geoip.x86_64 : Nginx HTTP geoip module

In questi casi, la versione nginx installata sarà 1.10.1 . Quando questo è vero, si può semplice installare il modulo nginx geoip dalla repo yum esistente di Amazon tramite:

sudo yum install nginx-mod-http-geoip

quindi associare il modulo con le vostre nginx.conf e l'immissione di questa linea nel contesto principale

include /usr/share/nginx/modules/mod-http-geoip.conf;

(notare che questo è leggermente diverso dalla risposta principale - in aws si ha una voce in nginx.conf che punta a un altro file *.conf che punta al file *.so)