惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
The Register - Security
The Register - Security
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
GbyAI
GbyAI
Recent Commits to openclaw:main
Recent Commits to openclaw:main
博客园_首页
D
Docker
S
Security @ Cisco Blogs
K
Kaspersky official blog
爱范儿
爱范儿
Simon Willison's Weblog
Simon Willison's Weblog
TaoSecurity Blog
TaoSecurity Blog
V
V2EX
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Troy Hunt's Blog
Cloudbric
Cloudbric
博客园 - 三生石上(FineUI控件)
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The Hacker News
The Hacker News
美团技术团队
S
SegmentFault 最新的问题
L
Lohrmann on Cybersecurity
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
宝玉的分享
宝玉的分享
The Last Watchdog
The Last Watchdog
Y
Y Combinator Blog
M
MIT News - Artificial intelligence
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Martin Fowler
Martin Fowler
Google Online Security Blog
Google Online Security Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tor Project blog
Vercel News
Vercel News
The Cloudflare Blog
G
Google Developers Blog
T
Threat Research - Cisco Blogs
AI
AI
Stack Overflow Blog
Stack Overflow Blog
I
InfoQ
Scott Helme
Scott Helme
S
Schneier on Security
大猫的无限游戏
大猫的无限游戏
The GitHub Blog
The GitHub Blog
S
Securelist
IT之家
IT之家
Microsoft Azure Blog
Microsoft Azure Blog

博客园 - 取经路上

IIS 下发布SignalR 访问接口进不去处理 Linux下部署.Net 应用程序和Web应用程序 CentOS 7 配置启动 手动编译的 nginx 关于SignalR并发量测试 C# 调用迅雷aplayer播放器的遇到的问题总结 C# 采用HttpWebRequest 、WebClient和HttpClient下载https的文件异常问题 C# 判别系统版本以及Win10的识别办法 MVC ActionResult 视图模型 MVC 前后台传值 MVC基础关键点 sqlserver 数据库、日志文件收缩 笔记 vue-cli启动报错问题: IE6无法获取class属性 windows server 2008 r2 datacenter 共享服务找不到网络路径解决办法 在Visual Studio 中的监视窗口中监视Com对象变量 删除GitHub上项目中的某个文件 转 WPF MVVM 循序渐进 (从基础到高级) 服务器未能识别 HTTP 头 SOAPAction 的值: http://tempuri.org/QueryUserName。
CentOS 7 nginx 安装 sticky模块
取经路上 · 2024-07-05 · via 博客园 - 取经路上

一、安装准备

         首先由于nginx的一些模块依赖一些lib库,所以在安装nginx之前,必须先安装这些lib库,这些依赖库主要有g++、gcc、openssl-devel、pcre-devel和zlib-devel 所以执行如下命令安装

安装下面命令的目的是确保系统上安装了这些库和开发包,以便在编译和安装一些需要使用这些库的软件时,可以顺利进行。

  sudo yum install -y pcre pcre-devel

    pcre 是 Perl Compatible Regular Expressions 的缩写,即 Perl 兼容的正则表达式库。

    pcre-devel 是用于开发的 pcre 库,包含头文件和静态库,可以帮助开发者编译和链接使用 pcre 的程序。

  sudo yum install -y gcc zlib-devel make

    zlib 是一个数据压缩库,广泛用于许多软件中,特别是在 web 服务器和应用中用于压缩和解压缩数据。

    zlib-devel 是 zlib 的开发包,包含了头文件和静态库,用于开发者编译和链接使用 zlib 的程序。

  sudo yum install -y openssl openssl-devel

    openssl 是一个开放源代码的加密库,实现了 SSL 和 TLS 协议,用于安全地传输数据。

    openssl-devel 是 OpenSSL 的开发包,包含了开发所需的头文件和静态库,用于开发者编译和链接使用 OpenSSL 的程序。

sudo yum install -y pcre pcre-devel

sudo yum install -y gcc zlib-devel make

sudo yum install -y openssl openssl-devel

二、安装Nginx

安装之前,最好检查一下是否已经安装有nginx


如果系统已经安装了nginx,那么就先卸载  注意:如果有之前配置好的 配置文件 请进行备份


首先进入/usr/local/src目录


下载nginx-sticky插件(正常是无法访问,方法你应该懂,不做负载均衡可以省略此步)

https://code.google.com/archive/p/nginx-sticky-module/downloads

wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/nginx-sticky-module/nginx-sticky-module-1.1.tar.gz

也可以先下载到本地电脑上,然后上传到服务器,ip换成你服务器的地址

scp E:\test\nginx-sticky-module-1.1.tar.gz root@127.0.0.1:/usr/local/src

解压

tar -xzvf nginx-sticky-module-1.1.tar.gz


从官网下载最新版的nginx,我这里使用1.20.1版本

wget http://nginx.org/download/nginx-1.20.1.tar.gz


解压nginx压缩包

tar -zxvf nginx-1.20.1.tar.gz


会产生一个nginx-1.20.1 目录,这时进入nginx-1.20.1目录

接下来安装,使用--prefix参数指定nginx安装的目录(/usr/local/nginx),

编译make、安装make install

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --add-module=../nginx-sticky-module-1.1

由于版本的问题编译时大概率会出现错误:

../nginx-sticky-module-1.1/ngx_http_sticky_module.c: In function ‘ngx_http_get_sticky_peer’:
../nginx-sticky-module-1.1/ngx_http_sticky_module.c:333:21: error: assignment makes pointer from integer without a cast [-Werror]
   iphp->rrp.current = iphp->selected_peer;

进入nginx-sticky-module-1.1目录


1.根据错误提示 对ngx_http_sticky_module.c文件也进行修改位置(333:21)vim 编辑器中输入333G


修改两个地方


第6行添加:


#include <nginx.h>


第333行左右(iphp->rrp.current = iphp->selected_peer;)修改为:


#if defined(nginx_version) && nginx_version >= 1009000

iphp->rrp.current = peer;

#else

iphp->rrp.current = iphp->selected_peer;

#endif


修改后参考,缩进自己调整,避免字符不匹配


/* we have a valid peer, tell the upstream module to use it */
if (peer && selected_peer >= 0) {
ngx_log_debug(NGX_LOG_DEBUG_HTTP, pc->log, 0, "[sticky/get_sticky_peer] peer found at index %i", selected_peer);
#if defined(nginx_version) && nginx_version >= 1009000
iphp->rrp.current = peer;
#else
iphp->rrp.current = iphp->selected_peer;
#endif

再次编译出现新的错误,错误省略了一部分 大概分两类错误

../nginx-sticky-module-1.1/ngx_http_sticky_misc.c
../nginx-sticky-module-1.1/ngx_http_sticky_misc.c: In function ‘ngx_http_sticky_misc_md5’:
../nginx-sticky-module-1.1/ngx_http_sticky_misc.c:117:14: error: ‘MD5_DIGEST_LENGTH’ undeclared (first use in this function)
u_char hash[MD5_DIGEST_LENGTH];
^
../nginx-sticky-module-1.1/ngx_http_sticky_misc.c:117:14: note: each undeclared identifier is reported only once for each function it appears in
../nginx-sticky-module-1.1/ngx_http_sticky_misc.c:117:9: error: unused variable ‘hash’ [-Werror=unused-variable]
u_char hash[MD5_DIGEST_LENGTH];

../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:2: error: passing argument 2 of ‘ngx_sock_ntop’ makes integer from pointer without a cast [-Werror]
digest->len = ngx_sock_ntop(in, digest->data, len, 1);

  第1种:是md5报错,增加头文件支持

#include <openssl/md5.h>第2种.根据提示 把ngx_http_sticky_misc.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);

修改完成后重新编译(编译成功了)

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --add-module=../nginx-sticky-module-1.1