nginx 编译安装sticky时报错处理

一般企事业单位的内网按照部门划分网段,ip hash 的负载均衡策略容易导致负载失衡,比如某个网段地址多,一些网段地址少,IP hash是基于IPv4地址的前三段来区分的(开发者可能觉得机器处理区分所有IP太累么?配置文件中让用户自己选择不好么?)。所以要使用sticy 模块来解决这个问题。不过使用nginx 1.25 和1.24等较新版本编译sticky模块时,make阶段报错:

  -o objs/addon/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.o \
        /opt/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c
/opt/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c: 在函数‘ngx_http_init_sticky_peer’中:
/opt/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:207:47: 错误:传递‘ngx_http_parse_multi_header_lines’的第 1 个参数时在不兼容的指针类型间转换 [-Werror=incompatible-pointer-types]
  207 |         if (ngx_http_parse_multi_header_lines(&r->headers_in.cookie, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
      |                                               ^~~~~~~~~~~~~~~~~~~~~
      |                                               |
      |                                               ngx_table_elt_t ** {或称 struct ngx_table_elt_s **}
In file included from /opt/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:9:
src/http/ngx_http.h:106:72: 附注:需要类型‘ngx_http_request_t *’ {或称 ‘struct ngx_http_request_s *’},但实参的类型为‘ngx_table_elt_t **’ {或称 ‘struct ngx_table_elt_s **’}
  106 | _table_elt_t *ngx_http_parse_multi_header_lines(ngx_http_request_t *r,
      |                                                 ~~~~~~~~~~~~~~~~~~~~^

/opt/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:207:70: 错误:传递‘ngx_http_parse_multi_header_lines’的第 2 个参数时在不兼容的指针类型间转换 [-Werror=incompatible-pointer-types]
  207 |  (ngx_http_parse_multi_header_lines(&r->headers_in.cookie, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
      |                                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                            |
      |                                                            ngx_str_t *

In file included from /opt/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:9:
src/http/ngx_http.h:107:22: 附注:需要类型‘ngx_table_elt_t *’ {或称 ‘struct ngx_table_elt_s *’},但实参的类型为‘ngx_str_t *’
  107 |     ngx_table_elt_t *headers, ngx_str_t *name, ngx_str_t *value);
      |     ~~~~~~~~~~~~~~~~~^~~~~~~
/opt/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:207:13: 错误:提供给函数‘ngx_http_parse_multi_header_lines’的实参太少
  207 |         if (ngx_http_parse_multi_header_lines(&r->headers_in.cookie, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:9:
src/http/ngx_http.h:106:18: 附注:在此声明
  106 | ngx_table_elt_t *ngx_http_parse_multi_header_lines(ngx_http_request_t *r,
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1:所有的警告都被当作是错误
make[1]: *** [objs/Makefile:1594:objs/addon/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.o] 错误 1
make[1]: 离开目录“/opt/nginx-1.24.0”
make: *** [Makefile:10:build] 错误 2
[root@localhost nginx-1.24.0]# ^C
[root@localhost nginx-1.24.0]# ^C

搞了半天,从网上也搜了不少文章介绍的方法都不行。 直到看到了这个文章:

nginx1.24版本编译sticky模块报‘ngx_http_headers_in_t’ has no member named ‘cookies’的解决方案_error: ‘ngx_http_headers_in_t’ has no member named-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_21076567/article/details/134922929主要两句话:

替换 sticky模块下ngx_http_sticky_module.c文件的文件内容:

 sed -i "s/ngx_http_parse_multi_header_lines.*/ngx_http_parse_multi_header_lines(r, r->headers_in.cookie, \&iphp->sticky_conf->cookie_name, \&route) != NULL){/g" ngx_http_sticky_module.c

实测1.24 和1.25的源码编译均有效。看起来好的解决办法就是简单粗暴。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/359934.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

医院如何筛选安全合规的内外网文件交换系统?

医院内外网文件交换系统是专为医疗机构设计的,用于在内部网络(内网)和外部网络(外网)之间安全、高效地传输敏感医疗数据和文件的解决方案。这种系统对于保护患者隐私、遵守医疗数据保护法规以及确保医疗服务的连续性和…

牛客网-----------[NOIP2006]数列

题目描述 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k3时,这个序列是: 1,3,4,9,10,12,13&…

LabVIEW机械臂轨迹跟踪控制

介绍了一个使用LabVIEW开发的机械臂轨迹跟踪控制系统。该系统的主要目标是实现对机械臂运动轨迹的精确控制,使其能够按照预定路径进行精确移动。此系统特别适用于需要高精度位置控制的场合,如自动化装配、精密操作等。 为了实现LabVIEW环境下的机械臂轨迹…

【大数据安全】大数据安全的挑战与对策基础设施安全

目录 一、大数据安全的挑战与对策 (一)数据加密技术 (二)大数据安全与隐私 (三)大数据安全保障体系 (四)华为大数据安全解决方案 二、基础设施安全 (一&#xff0…

TCP/IP网络模型

大家好我是苏麟 , 今天聊聊TCP/IP四层网络模型 . 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 应用层 最上层的,也是我们能直接接触到的就是应用层(Application Layer),我们电脑或手机使用的应用软件都…

Cloudera Manager 安装 Kafka 并简单使用

Kafka 简介 kafka 是一款分布式消息发布和订阅的系统,具有高性能和高吞吐率。 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理&#…

CCF-CSP 202312-1 仓库规划(Java、C++、Python)

文章目录 仓库规划问题描述输入格式输出格式样例输入样例输出子任务 满分代码JavaCPython 仓库规划 问题描述 西西艾弗岛上共有 n n n 个仓库, 依次编号为 1 ⋯ n 1 \cdots n 1⋯n 。每个仓库均有一个 m m m 维向量的位置编码, 用来表示仓库间的物流运转关系。 具体来说,…

uni-app小程序自定义导航栏

最近在开发一个uni-app小程序,用到了自定义导航栏,在这里记录一下实现过程: page.json 在对应页面路由的style中设置入"navigationStyle": "custom"取消原生导航栏,自定义导航栏 {"path": "…

企业级大模型的护城河:RAG + 微调

围绕LLM的炒作是前所未有的,但这是有道理的,生成式 AI 有潜力改变我们所知道的社会。 在很多方面,LLM将使数据工程师变得更有价值——这令人兴奋! 不过,向老板展示数据发现工具或文本到 SQL 生成器的炫酷演示是一回事…

flutter+go构建的即时通讯app,ChatCraft

前言 Hi👋all.好久不见,已经两个多月没有发文章了,这段时间一直在反思过去的一年,有好有坏。对博客文章这块我对自己是不满意的,文章的质量参差不齐,有时候在没有好的题材时,我会选择写一些泛泛…

正则表达式与文本三剑客

目录 一、正则表达式 1. 定义 2. 字符匹配 3. 重复限定符 4. 位置锚点 5. 分组和引用 6. 扩展正则表达式 二、文本三剑客 1. grep 1.1 定义 1.2 语法 1.3 选项 1.4 示例 2. sed 2.1 定义 2.2 通式 2.3 选项 2.4 脚本格式(脚本语法) 2.…

【VS Code+Verilog+Vivado使用】(2)基本设置

文章目录 2 基本设置2.1 字体大小2.2 Tab大小2.3 选中高亮2.4 文件编码 2 基本设置 2.1 字体大小 方法1:VS Code左下角 > 管理 > 设置,搜索"font size",点击左侧"字体",根据需要设置"editor.fon…

【乳腺肿瘤诊断分类及预测】基于LVQNN学习向量量化神经网络

课题名称:基于LVQ神经网络的乳腺肿瘤诊断(类型分类) 版本日期:2023-03-10 运行方式: 直接运行0501_LVQ0501.m 文件即可 代码获取方式:私信博主或QQ:491052175 模型描述: 威斯康辛大学医学院…

[AG32VF407]国产MCU+FPGA Verilog编写控制2路gpio输出不同频率方波实验

视频讲解 [AG32VF407]国产MCUFPGA Verilog编写控制2路gpio输出不同频率方波实验 实验过程 根据原理图,选择两个pin脚作为输出 修改VE文件,clk选择PIN_OSC,使用内部晶振8Mhz,gpio使用PIN_51和52,pinout是数组 添加pll…

Linux下qemu的安装并搭建虚拟arm环境(带helloworld测试)【超详细】

qemu的安装并搭建虚拟arm环境 1、准备工作1.1 安装交叉汇编工具1.2 编译内核kernel1.3 u-boot编译1.4 制作根文件系统-busybox 2、启动qemu(arm)3、helloworld测试 1、准备工作 1.1 安装交叉汇编工具 交叉编译器的作用就不需要详细解释了,因…

2024/1/28CSS学习:基础认知;选择器;文本样式

一、基础认知 1.1层叠样式表 作用:样式美观,给Html美化 1.2语法规则 写在style标签里面 选择器——找标签使用 属性名:属性值; 2.1CSS引入方式 1.内嵌式 CSS 写在style标签中 提示:style标签虽然可以写在页面任意位置&#…

交叉注意力融合时域、频域特征的FFT + CNN-Transformer-CrossAttention轴承故障识别模型

目录 往期精彩内容: 前言 1 快速傅里叶变换FFT原理介绍 第一步,导入部分数据 第二步,故障信号可视化 第三步,故障信号经过FFT可视化 2 轴承故障数据的预处理 2.1 导入数据 2.2 制作数据集和对应标签 3 交叉注意力机制 …

C++初阶:入门泛型编程(函数模板和类模板)

大致介绍了一下C/C内存管理、new与delete后:C初阶:C/C内存管理、new与delete详解 我们接下来终于进入了模版的学习了,今天就先来入门泛型编程 文章目录 1.泛型编程2.函数模版2.1概念2.2格式2.3函数模版的原理2.4函数模版的实例化2.4.1隐式实例…

新书速览|Python数据科学应用从入门到精通

系统教授数据科学与Python实战,涵盖线性回归、逻辑回归、决策树、随机森林、神经网 本书内容 随着数据存储、数据处理等大数据技术的快速发展,数据科学在各行各业得到广泛的应用。数据清洗、特征工程、数据可视化、数据挖掘与建模等已成为高校师生和职场…

教你如何轻松浏览OSGB倾斜摄影三维模型

倾斜摄影测量技术发展至今,已经属于一项成熟度很高的技术。但对于倾斜摄影三维模型数据如何展示,如何与业务进行结合一直是行业比较苦恼的事情。下面我会教大家通过四维轻云实现倾斜摄影三维模型数据的编辑、展示及分享。 一、平台登录 在四维轻云官网…
最新文章