运维小知识之nginx---..nginx-sticky-module-1.1ngx_http_sticky_misc.cIn function ‘ngx_http_sticky_misc_text_...

本文详细介绍了在使用Nginx做负载均衡时遇到的session共享问题及其解决方法,通过调整Nginx Sticky Module源代码中的函数调用来成功解决了编译错误。提供了解决思路与步骤,有助于提升对Nginx扩展模块的理解与实践能力。

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


运维小知识之nginx---..nginx-sticky-module-1.1ngx_http_sticky_misc.cIn function ‘ngx_http_sticky_misc_text_raw



 

         背景

         今天笔者在使用nginx做负载均衡的过程中遇到了一个问题,如何解决session共享的问题,稍一查找发现解决办法不少,笔者使用的是nginx的一直扩展模块(安装和配置已经在前两篇博客有简单的介绍)在安装的过程中居然出现了问题,咱也不是逃避的人,解决吧,见下文。

        

         问题描述

make[1]: Entering directory`/usr/local/nginx-1.7.4'
cc -c -pipe  -O -W -Wall -Wpointer-arith-Wno-unused-parameter -Werror -g   -I src/core-I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -Isrc/http/modules -I src/mail \
                -oobjs/addon/nginx-sticky-module-1.1/ngx_http_sticky_misc.o \
               ../nginx-sticky-module-1.1/ngx_http_sticky_misc.c
cc1: warnings being treated as errors
../nginx-sticky-module-1.1/ngx_http_sticky_misc.c:In function ‘ngx_http_sticky_misc_text_raw’:
../nginx-sticky-module-1.1/ngx_http_sticky_misc.c:281:error: passing argument 2 of ‘ngx_sock_ntop’makes integer from pointer without a cast
src/core/ngx_inet.h:110: note: expected ‘socklen_t’ but argument is of type ‘u_char *’
../nginx-sticky-module-1.1/ngx_http_sticky_misc.c:281:error: passing argument 3 of ‘ngx_sock_ntop’makes pointer from integer without a cast
src/core/ngx_inet.h:110: note: expected ‘u_char*’ but argument is of type ‘size_t’
../nginx-sticky-module-1.1/ngx_http_sticky_misc.c:281:error: too few arguments to function ‘ngx_sock_ntop’
make[1]: ***[objs/addon/nginx-sticky-module-1.1/ngx_http_sticky_misc.o] Error 1
make[1]: Leaving directory`/usr/local/nginx-1.7.4'
make: *** [build] Error 2



         解决方法

         进入nginx-sticky-module-1.1解压之后的文件夹

cd /usr/local/nginx-sticky-module-1.1


         编辑文件夹里面的ngx_http_sticky_module.c文件

vi ngx_http_sticky_module.c


         找到文件的地281行,做出如下修改

原digest->len =ngx_sock_ntop(in,digest
       ->data, len, 1);
改后digest->len =ngx_sock_ntop(in,sizeof(struct sockaddr_in),digest
       ->data, len, 1);

        

         后记

         今天状态不做,便把遇到的问题以及解决方法都稍微整理了一下,希望对读者有帮助,其实自己忘了,也能回来看看,一举两得。

/opt/nginx-sticky-module/ngx_http_sticky_misc.c: 在函数‘ngx_http_sticky_misc_sha1’中: /opt/nginx-sticky-module/ngx_http_sticky_misc.c:176:15: 错误:‘SHA_DIGEST_LENGTH’未声明(在此函数内第一次使用) u_char hash[SHA_DIGEST_LENGTH]; ^ /opt/nginx-sticky-module/ngx_http_sticky_misc.c:176:15: 附注:每个未声明的标识符在其出现的函数内只报告一次 /opt/nginx-sticky-module/ngx_http_sticky_misc.c:176:10: 错误:未使用的变量‘hash’ [-Werror=unused-variable] u_char hash[SHA_DIGEST_LENGTH]; ^ /opt/nginx-sticky-module/ngx_http_sticky_misc.c: 在函数‘ngx_http_sticky_misc_hmac_sha1’中: /opt/nginx-sticky-module/ngx_http_sticky_misc.c:242:15: 错误:‘SHA_DIGEST_LENGTH’未声明(在此函数内第一次使用) u_char hash[SHA_DIGEST_LENGTH]; ^ /opt/nginx-sticky-module/ngx_http_sticky_misc.c:243:12: 错误:‘SHA_CBLOCK’未声明(在此函数内第一次使用) u_char k[SHA_CBLOCK]; ^ /opt/nginx-sticky-module/ngx_http_sticky_misc.c:243:10: 错误:未使用的变量‘k’ [-Werror=unused-variable] u_char k[SHA_CBLOCK]; ^ /opt/nginx-sticky-module/ngx_http_sticky_misc.c:242:10: 错误:未使用的变量‘hash’ [-Werror=unused-variable] u_char hash[SHA_DIGEST_LENGTH]; ^ /opt/nginx-sticky-module/ngx_http_sticky_misc.c: 在函数‘ngx_http_sticky_misc_text_raw’中: /opt/nginx-sticky-module/ngx_http_sticky_misc.c:324:5: 错误:传递‘ngx_sock_ntop’的第 1 个参数时将整数赋给指针,未作类型转换 [-Werror] digest->len = ngx_sock_ntop(1); ^ In file included from src/core/ngx_core.h:82:0, from /opt/nginx-sticky-module/ngx_http_sticky_misc.c:8: src/core/ngx_inet.h:114:8: 附注:需要类型‘struct sockaddr *’,但实参的类型为‘int’ size_t ngx_sock_ntop(struct sockaddr *sa, socklen_t socklen, u_char *text, ^ /opt/nginx-sticky-module/ngx_http_sticky_misc.c:324:5: 错误:提供给函数‘ngx_sock_ntop’的实参太少 digest->len = ngx_sock_ntop(1); ^
06-24
/opt/nginx-sticky-module-ng-master/ngx_http_sticky_module.c: 在函数‘ngx_http_sticky_header_filter’中: /opt/nginx-sticky-module-ng-master/ngx_http_sticky_module.c:475:63: 错误:‘ngx_http_upstream_headers_in_t’没有名为‘cookies’的成员 if (ngx_http_parse_set_cookie_lines(&r->upstream->headers_in.cookies, &ctx->sticky_conf->cookie_name, &transfer_cookie) == NGX_DECLINED) ^ /opt/nginx-sticky-module-ng-master/ngx_http_sticky_module.c:475:3: 错误:传递‘ngx_http_parse_set_cookie_lines’的第 2 个参数时在不兼容的指针类型间转换 [-Werror] if (ngx_http_parse_set_cookie_lines(&r->upstream->headers_in.cookies, &ctx->sticky_conf->cookie_name, &transfer_cookie) == NGX_DECLINED) ^ In file included from /opt/nginx-sticky-module-ng-master/ngx_http_sticky_module.c:9:0: src/http/ngx_http.h:113:18: 附注:需要类型‘struct ngx_table_elt_t *’,但实参的类型为‘struct ngx_str_t *’ ngx_table_elt_t *ngx_http_parse_set_cookie_lines(ngx_http_request_t *r, ^ /opt/nginx-sticky-module-ng-master/ngx_http_sticky_module.c:475:3: 错误:提供给函数‘ngx_http_parse_set_cookie_lines’的实参太少 if (ngx_http_parse_set_cookie_lines(&r->upstream->headers_in.cookies, &ctx->sticky_conf->cookie_name, &transfer_cookie) == NGX_DECLINED) ^ In file included from /opt/nginx-sticky-module-ng-master/ngx_http_sticky_module.c:9:0: src/http/ngx_http.h:113:18: 附注:在此声明 ngx_table_elt_t *ngx_http_parse_set_cookie_lines(ngx_http_request_t *r,
最新发布
06-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值