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.so
eu 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/ModSecurity
o diretório ldd
estava retornando
libmodsecurity.so.3 => não encontrado
e openresty/nginx estava falhando com a mesma mensagem de erro da pergunta.