Я создал многоступенчатую сборку докеров, чтобы получить в итоге небольшой компактный контейнер с самой последней версией nginx и некоторыми модулями, скомпилированными из исходного кода.
В конце я копирую двоичный файл и несколько других файлов в окончательный контейнер - это отлично работает.
Кроме того, я пытаюсь настроить modsecurity, как указано здесь: https://www.nginx.com/blog/compiling-and-installing-modsecurity-for-open-source-nginx/
Это также отлично работает в исходном контейнере сборки. Бу, когда я копирую ngx_http_modsecurity_module.so в конечный целевой контейнер и запускаю nginx, он терпит неудачу:
[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
Файл определенно существует, поэтому сообщение об ошибке не очень точное и не очень полезное.
Поскольку он работает в контейнере сборки, я подозреваю, что чего-то еще не хватает, но сообщение об ошибке не дает никаких полезных подсказок? Что могло не хватать? Где мне искать новые подсказки? Спасибо.
PS: Начну с debian: stretch-slim image
После проверки Эта проблема Я правильно установил ModSecurity lib в Debian и стал доступен во всем мире, добавив эти два флага в ./configure
--prefix = / usr --with-ld-opt = / usr / lib
До этого при проверке ldd ngx_http_modsecurity_module.so
Я получал
libmodsecurity.so.3 => /opt/ModSecurity/src/.libs/libmodsecurity.so.3
который работал нормально, пока я не очистил файлы сборки. После удаления /opt/ModSecurity
реж ldd
возвращался
libmodsecurity.so.3 => не найдено
и openresty / nginx не работал с тем же сообщением об ошибке из вопроса.
Пытаться https://hub.docker.com/r/krish512/modsecurity/, он уже построен с последними правилами ModSecurity CRS
По совпадению я узнал это сейчас. Мне пришлось:
Также скопируйте:
/usr/local/modsecurity
и установите:
libgeoip1 libxml2 liblmdb0 libyajl2
Наверное, потому что это динамический модуль.