Docker-Mehrstufen-Build mit Nginx und Modsecurity – gemeinsam genutztes Objekt kann nicht geöffnet werden

Docker-Mehrstufen-Build mit Nginx und Modsecurity – gemeinsam genutztes Objekt kann nicht geöffnet werden

Ich habe einen Docker-Multistage-Build erstellt, um am Ende einen kleinen, schlanken Container mit der aktuellsten Nginx-Version und einigen aus dem Quellcode kompilierten Modulen zu erhalten.

Am Ende kopiere ich die Binärdatei und einige andere Dateien in den endgültigen Container – das funktioniert einwandfrei.

Zusätzlich versuche ich, Modsecurity wie hier beschrieben einzurichten: https://www.nginx.com/blog/kompilieren-und-installieren-von-modsecurity-für-open-source-nginx/

Dies funktioniert auch im ursprünglichen Build-Container einwandfrei. Aber wenn ich ngx_http_modsecurity_module.so in den endgültigen Zielcontainer kopiere und nginx starte, schlägt es mit folgendem Fehler fehl:

[emerg] 1#1: dlopen() "/usr/local/nginx/modules/ngx_http_modsecurity_module.so" failed (libmodsecurity.so.3: cannot open shared object file: No such file or directory) in /etc/nginx/nginx.conf:10

Die Datei existiert auf jeden Fall, daher ist die Fehlermeldung weder besonders präzise noch besonders hilfreich.

Da es im Build-Container funktioniert, vermute ich, dass noch etwas fehlt, aber die Fehlermeldung gibt keine hilfreichen Hinweise? Was könnte fehlen? Wo könnte ich nach weiteren Hinweisen suchen? Danke.

PS: Ich beginne mit dem Image debian:stretch-slim

Antwort1

Durch Zufall habe ich es jetzt herausgefunden. Ich musste:

Kopieren Sie außerdem:

/usr/local/modsecurity

und installieren:

libgeoip1 libxml2 liblmdb0 libyajl2

Wahrscheinlich, weil es sich hierbei um ein dynamisches Modul handelt.

Antwort2

Versuchenhttps://hub.docker.com/r/krish512/modsecurity/, es ist bereits mit den neuesten ModSecurity CRS-Regeln erstellt

Antwort3

Nach der Überprüfungdieses ProblemIch habe die ModSecurity-Bibliothek ordnungsgemäß unter Debian installiert und global verfügbar gemacht, indem ich diese beiden Flags hinzugefügt habe zu./configure

--prefix=/usr --with-ld-opt=/usr/lib


Zuvor beim Checken ldd ngx_http_modsecurity_module.sobekam ich

libmodsecurity.so.3 => /opt/ModSecurity/src/.libs/libmodsecurity.so.3

das funktionierte gut, bis ich die Build-Dateien bereinigte. Nach dem Entfernen kehrte /opt/ModSecuritydir zurückldd

libmodsecurity.so.3 => nicht gefunden

und openresty/nginx schlug mit derselben Fehlermeldung wie in der Frage fehl.

verwandte Informationen