In diesem Tutorial erkläre ich, wie man ein externes Modul für Nginx kompiliert, um dem Webserver zusätzliche Funktionalität hinzuzufügen.
Zur Veranschaulichung dieses Tutorials nehme ich das Modul als Beispiel http-headers-more-filter Dadurch können Sie die von HTTP-Anfragen gesendeten Header (Hörer) ändern.
Bevor Sie beginnen, stellen Sie sicher, dass der Compiler installiert ist:
sudo apt install gcc
Der erste Schritt besteht darin, zu überprüfen, ob das Modul vorhanden ist. Geben Sie zur Überprüfung den folgenden Befehl ein.
nginx -V 2>&1 | grep --color 'http-headers-more-filter'
Wenn der Befehl nichts zurückgibt, ist das Modul nicht vorhanden.
Um das Modul zu kompilieren, benötigen wir die Nginx-Quellen. Rufen Sie die installierte Version mit dem folgenden Befehl ab:
nginx-V
Wie im Screenshot unten zu sehen ist, ist Nginx 1.21.0 installiert.
Laden Sie die Quellen der installierten Nginx-Version herunter. Im Beispiel verwende ich den folgenden Befehl:
wget https://nginx.org/download/nginx-1.21.0.tar.gz
Entpacken Sie das Archiv mit dem Befehl tar:
tar -xzvf nginx-1.21.0.tar.gz
Mit dem Befehl ll können wir sehen, dass das Archiv entpackt ist.
Sie müssen nun die Modulquellen herunterladen. Die Quellen des Hearers-More-Moduls finden Sie hier : openresty/headers-more-nginx-module: Set, add, and clear arbitrary output headers in NGINX http servers (github.com).
Wir klonen das Repository mit dem Git-Befehl:
git clone https://github.com/openresty/headers-more-nginx-module.git
Listen Sie dann auf, um zu überprüfen, ob das Repository geklont ist.
Abhängig von den gewünschten Modulen können Abhängigkeiten notwendig sein, hier müssen Sie folgende Pakete installieren:
- libpcre3-dev
- zlib1g
sudo apt install libpcre3-dev zlib1g
Gehen Sie zu dem Ordner, der die Nginx-Quellen enthält:
cd nginx-1.21.0
Jetzt konfigurieren wir die Kompilierung des Moduls mit dem folgenden Befehl:
./configure --add-dynamic-module=../headers-more-nginx-module
Passen Sie den Pfad des Parameters –add-dynamic-module= an, den Sie kompilieren möchten.
Sobald die Kompilierung konfiguriert ist, kompilieren Sie sie mit dem folgenden Befehl:
make modules
Das Modul ist kompiliert, die .so-Datei des Moduls befindet sich im objs-Ordner des Nginx-Quellordners.
Sie müssen nun die .so-Datei in den Ordner /etc/nginx/modules verschieben. Sobald die Datei verschoben wurde, müssen Sie Nginx anweisen, das Modul zu laden.
Öffnen Sie die Datei nginx.conf und fügen Sie die Anweisung „load_module“ hinzu.
load_module modules/ngx_http_header_more_filter_modules.so
Starten Sie dann Nginx neu
sudo systemctl restart nginx
Sie wissen jetzt, wie Sie ein externes Modul für Nginx kompilieren.