Compilação de vários estágios do Docker com nginx e modsecurity - não é possível abrir o objeto compartilhado

Compilação de vários estágios do Docker com nginx e modsecurity - não é possível abrir o objeto compartilhado

Eu criei uma compilação docker de vários estágios para poder obter um contêiner pequeno e enxuto com a versão nginx mais recente e alguns módulos compilados a partir do código-fonte.

No final, copio o binário e alguns outros arquivos para o contêiner final - isso funciona bem.

Além disso, estou tentando configurar o modsecurity conforme as instruções aqui: https://www.nginx.com/blog/compiling-and-installing-modsecurity-for-open-source-nginx/

Isso também funciona bem no contêiner de compilação original. Mas quando copio ngx_http_modsecurity_module.so para o contêiner de destino final e inicio o nginx, ele falha com:

[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

O arquivo definitivamente existe, então a mensagem de erro não é muito precisa nem muito útil.

Como funciona no contêiner de compilação, suspeito que algo mais esteja faltando, mas a mensagem de erro não fornece nenhuma pista útil. O que pode estar faltando? Onde eu poderia procurar mais pistas? Obrigado.

PS: eu começo com debian:stretch-slim image

Responder1

Por coincidência descobri agora. Eu precisei:

Copie também:

/usr/local/modsecurity

e instale:

libgeoip1 libxml2 liblmdb0 libyajl2

Provavelmente porque este é um módulo dinâmico.

Responder2

Tentarhttps://hub.docker.com/r/krish512/modsecurity/, ele já foi construído com as regras mais recentes do ModSecurity CRS

Responder3

Depois de checaresse assuntoEu tenho o ModSecurity lib instalado corretamente no Debian e disponível globalmente adicionando estes dois sinalizadores a./configure

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


Antes disso, enquanto verificava se ldd ngx_http_modsecurity_module.soeu estava recebendo

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

que estava funcionando bem até que eu limpei os arquivos de compilação. Depois de remover /opt/ModSecurityo diretório lddestava retornando

libmodsecurity.so.3 => não encontrado

e openresty/nginx estava falhando com a mesma mensagem de erro da pergunta.

informação relacionada