在NGINX OSS中编译ModSecurity

时间:2018-02-10 00:55:28

标签: nginx mod-security

我正在尝试为Nginx OSS Web服务器编译ModSecurity。我已按照他们的"快速入门指南"中的所有说明进行操作,但遇到了问题。链接新模块后,配置测试失败。

/var/log/nginx/error.log的错误输出是:

2018/02/10 00:47:51 [emerg] 6026#6026: module "/usr/share/nginx/modules/ngx_http_modsecurity_module.so" is not binary compatible in /etc/nginx/modules-enabled/50-mod-http-modsecurity.conf:1

最初动态模块是用

编译的

sh ./configure --with-compat --add-dynamic-module=../ModSecurity-nginx

但这会导致错误。

根据我的阅读,我需要使用与现有Nginx实例相同的选项编译模块。

我使用nginx -V找到了当前选项,然后使用所有输出选项重新运行./configure,但这会产生相同的错误。

有人能指出我在正确的道路上吗?

感谢您的帮助。

更新10/29/18

原始二进制文件似乎也需要使用--with-compat标志进行编译。我已经提交了一个关于这个问题的错误报告,可以在这里找到:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897926

也许它可以获得一些牵引力。

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题。我使用的是Nginx 1.10.3,这是Debian Stretch的默认设置。此版本似乎不适用于最新的Nginx ModSecurity连接器。

我删除了默认的Nginx版本,并从http://nginx.org/en/linux_packages.html安装了最新的稳定Nginx。之后,我能够为Nginx安装并加载ModSecurity模块,而不会出现问题。我遵循了本指南:https://www.linuxjournal.com/content/modsecurity-and-nginx,为Nginx安装ModSecurity模块。

最新的Nginx稳定版本1.14.2支持-with-compat 标志。编译Nginx源代码时,请确保使用与正在运行的Nginx相同的编译器选项。要找出用于构建当前正在运行的Nginx的编译时间选项,请运行以下命令: nginx -V