In questo tutorial ti spiegherò come compilare un modulo esterno per Nginx per aggiungere ulteriori funzionalità al server web.
Per illustrare questo tutorial, prenderò come esempio il modulo http-headers-more-filter che consente di modificare le intestazioni (hearder) inviate dalle richieste HTTP.
Prima di iniziare, assicurati di avere installato il compilatore:
sudo apt install gcc
Il primo passo è verificare se il modulo è presente, inserire il comando seguente per verificare.
nginx -V 2>&1 | grep --color 'http-headers-more-filter'
Se il comando non restituisce nulla, il modulo non è presente.
Per compilare il modulo avremo bisogno dei sorgenti Nginx, recuperate la versione installata utilizzando il comando:
nginx-V
Come puoi vedere nello screenshot qui sotto, è installato Nginx 1.21.0.
Scarica i sorgenti della versione Nginx installata, nell’esempio utilizzerò il seguente comando:
wget https://nginx.org/download/nginx-1.21.0.tar.gz
Decomprimere l’archivio utilizzando il comando tar:
tar -xzvf nginx-1.21.0.tar.gz
Usando il comando ll, possiamo vedere che l’archivio è decompresso.
Ora devi scaricare i sorgenti del modulo. i sorgenti del modulo Listeners-more sono disponibili qui : openresty/headers-more-nginx-module: Set, add, and clear arbitrary output headers in NGINX http servers (github.com).
Cloniamo il repository utilizzando il comando git:
git clone https://github.com/openresty/headers-more-nginx-module.git
Quindi elenca per verificare che il repository sia clonato.
A seconda dei moduli desiderati, potrebbero essere necessarie delle dipendenze, qui è necessario installare i seguenti pacchetti:
- libpcre3-dev
- zlib1g
sudo apt install libpcre3-dev zlib1g
Vai alla cartella che contiene i sorgenti Nginx:
cd nginx-1.21.0
Ora configureremo la compilazione del modulo utilizzando il comando seguente:
./configure --add-dynamic-module=../headers-more-nginx-module
Adatta il percorso del parametro –add-dynamic-module= che desideri compilare.
Una volta configurata la compilazione, compilatela con il comando:
make modules
Il modulo è compilato, il file .so del modulo si trova nella cartella objs della cartella sorgente di Nginx.
Ora devi spostare il file .so nella cartella /etc/nginx/modules. Una volta spostato il file, devi dire a Nginx di caricare il modulo.
Apri il file nginx.conf e aggiungi l’istruzione load_module.
load_module modules/ngx_http_header_more_filter_modules.so
Quindi riavvia Nginx
sudo systemctl restart nginx
Ora sai come compilare un modulo esterno per Nginx.