在编译和安装“ 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
答案 0 :(得分:0)
ModSecurity nginx连接器编译失败,因为它找不到ModSecurity标头。每次调用ModSecurity函数时,这是编译器第一次听说该函数的存在,因此使它成为“隐式”函数声明。
长话短说,您需要指定编译器在哪里可以找到ModSecurity标头和库。为此,您应该在配置或编译连接器模块之前设置两个环境变量。
export MODSECURITY_INC="/opt/ModSecurity/headers/"
export MODSECURITY_LIB="/opt/ModSecurity/src/.libs/"
这些路径直接来自文档,因此您需要根据yum
在libmodsecurity-devel
软件包的安装位置进行调整。