nginx添加块ngx_cache_purge编译失败

在配置nginx1.14.0时,编译ngx_cache_purge低于2.3版本会导致语法错误。解决办法是使用ngx_cache_purge的2.3及以上版本进行编译,此操作成功解决了问题。对于ngx_cache_purge的安装和nginx缓存配置的疑难,可参考相关博客文章。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天折腾nginx然后遇到的的问题一一记录下来下次方便自查

> ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=../ngx_cache_purge-2.2
    ../ngx_cache_purge-2.2/ngx_cache_purge_module.c
../ngx_cache_purge-2.2/ngx_cache_purge_module.c: 在函数‘ngx_http_fastcgi_cache_purge_conf’中:
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:274:30: 错误:比较指针和整数 [-Werror]
     if (flcf->upstream.cache != NGX_CONF_UNSET_PTR
                              ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:275:33: 错误:比较指针和整数 [-Werror]
         && flcf->upstream.cache != NULL)
                                 ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:291:26: 错误:赋值时将指针赋给整数,未作类型转换 [-Werror]
     flcf->upstream.cache = ngx_shared_memory_add(cf, &value[1], 0,
                          ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:293:30: 错误:比较指针和整数 [-Werror]
     if (flcf->upstream.cache == NULL) {
                              ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c: 在函数‘ngx_http_fastcgi_cache_purge_handler’中:
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:324:58: 错误:‘->’参数类型无效(有‘int’)
     if (ngx_http_cache_purge_init(r, flcf->upstream.cache->data,
                                                          ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c: 在函数‘ngx_http_proxy_cache_purge_conf’中:
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:463:30: 错误:比较指针和整数 [-Werror]
     if (plcf->upstream.cache != NGX_CONF_UNSET_PTR
                              ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:464:33: 错误:比较指针和整数 [-Werror]
         && plcf->upstream.cache != NULL)
                                 ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:480:26: 错误:赋值时将指针赋给整数,未作类型转换 [-Werror]
     plcf->upstream.cache = ngx_shared_memory_add(cf, &value[1], 0,
                          ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:482:30: 错误:比较指针和整数 [-Werror]
     if (plcf->upstream.cache == NULL) {
                              ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c: 在函数‘ngx_http_proxy_cache_purge_handler’中:
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:513:58: 错误:‘->’参数类型无效(有‘int’)
     if (ngx_http_cache_purge_init(r, plcf->upstream.cache->data,
                                                          ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c: 在函数‘ngx_http_scgi_cache_purge_conf’中:
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:594:30: 错误:比较指针和整数 [-Werror]
     if (slcf->upstream.cache != NGX_CONF_UNSET_PTR
                              ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:595:33: 错误:比较指针和整数 [-Werror]
         && slcf->upstream.cache != NULL)
                                 ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:611:26: 错误:赋值时将指针赋给整数,未作类型转换 [-Werror]
     slcf->upstream.cache = ngx_shared_memory_add(cf, &value[1], 0,
                          ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:613:30: 错误:比较指针和整数 [-Werror]
     if (slcf->upstream.cache == NULL) {
                              ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c: 在函数‘ngx_http_scgi_cache_purge_handler’中:
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:644:58: 错误:‘->’参数类型无效(有‘int’)
     if (ngx_http_cache_purge_init(r, slcf->upstream.cache->data,
                                                          ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c: 在函数‘ngx_http_uwsgi_cache_purge_conf’中:
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:748:30: 错误:比较指针和整数 [-Werror]
     if (ulcf->upstream.cache != NGX_CONF_UNSET_PTR
                              ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:749:33: 错误:比较指针和整数 [-Werror]
         && ulcf->upstream.cache != NULL)
                                 ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:765:26: 错误:赋值时将指针赋给整数,未作类型转换 [-Werror]
     ulcf->upstream.cache = ngx_shared_memory_add(cf, &value[1], 0,
                          ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:767:30: 错误:比较指针和整数 [-Werror]
     if (ulcf->upstream.cache == NULL) {
                              ^
../ngx_cache_purge-2.2/ngx_cache_purge_module.c: 在函数‘ngx_http_uwsgi_cache_purge_handler’中:
../ngx_cache_purge-2.2/ngx_cache_purge_module.c:798:58: 错误:‘->’参数类型无效(有‘int’)
     if (ngx_http_cache_purge_init(r, ulcf->upstream.cache->data,

上面编译的时候都会失败,是版本的原因我的是nginx1.14.0的版本 然后编译ngx_cache_purge-2.3以下的版本都会出现这种语法错误,然后我编译2.3的就ok

> ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=../ngx_cache_purge-2.3

sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
    -e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
    -e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
    -e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
    < man/nginx.8 > objs/nginx.8
make[1]: 离开目录“/usr/local/software/nginx-1.14.0”

上面就编译成功了

关于ngx_cache_purge的安装我是参照了几篇博客如果前面的步骤未完成同学可以试以下博主提供的方法

nginx 缓存配置及报错解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值