在编译和安装“ ModSecurity- Nginx”模块时执行“ make”命令时发生错误

问题描述

在编译和安装“ ModSecurity- Nginx”模块时出现以下错误

安装“ ModSecurity- Nginx”模块

#yum install -y gcc-c++ flex bison yajl yajl-devel curl-devel curl GeoIP-devel doxygen zlib-devel pcre-devel lmdb-devel libxml2-devel ssdeep-devel lua-devel libtool autoconf automake

#cd /root

#git clone https://github.com/SpiderLabs/ModSecurity-Nginx.git

#yum install libmodsecurity-devel

#cd /root/Nginx-1.10.3/

#./configure --prefix=/opt/Nginx  --add-module=/root/ModSecurity-Nginx

编译

#make  **(Now start reporting errors)**

错误

/opt/ModSecurity-Nginx/src/ngx_http_modsecurity_module.c:在函数ngx_http_modsecurity_create_ctx中:

/opt/ModSecurity-Nginx/src/ngx_http_modsecurity_module.c:259:9:错误函数'msc_new_transrror =隐式函数声明的隐式声明] ctx-> modsec_transaction = msc_new_transaction_with_id(mmcf-> modsec,mcf-> rules_set,(字符*)s.data,r-> conne

/opt/ModSecurity-Nginx/src/ngx_http_modsecurity_module.c:259:33:错误:赋值使指针从不带ctx-> modsec_transaction = msc_new_transaction_with_id(mmcf-> modsec,mcf-> rules_set,(char *)s的整数的指针.data,r-> conne

cc1:将所有警告视为错误

make [1]:*** [objs / addon / src / ngx_http_modsecurity_module.o]错误1

make [1]:离开目录`/root/Nginx-1.16.1'

制造商:*** [构建]错误2

解决方法

ModSecurity nginx连接器编译失败,因为它找不到ModSecurity标头。每次调用ModSecurity函数时,这是编译器第一次听说该函数的存在,因此使它成为“隐式”函数声明。

长话短说,您需要指定编译器在哪里可以找到ModSecurity标头和库。为此,您应该在配置或编译连接器模块之前设置两个环境变量。

export MODSECURITY_INC="/opt/ModSecurity/headers/"
export MODSECURITY_LIB="/opt/ModSecurity/src/.libs/"

这些路径直接来自文档,因此您需要根据yumlibmodsecurity-devel软件包的安装位置进行调整。

您可以找到分别构建ModSecurity模块和ModSecurity nginx连接器herehere的方法。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...