一、安装准备
首先由于nginx的一些模块依赖一些lib库,所以在安装nginx之前,必须先安装这些lib库,这些依赖库主要有g++、gcc、openssl-devel、pcre-devel和zlib-devel 所以执行如下命令安装
yum install gcc-c++
安装下面命令的目的是确保系统上安装了这些库和开发包,以便在编译和安装一些需要使用这些库的软件时,可以顺利进行。
yum install pcre pcre-devel:
pcre
是 Perl Compatible Regular Expressions 的缩写,即 Perl 兼容的正则表达式库。
pcre-devel
是用于开发的 pcre 库,包含头文件和静态库,可以帮助开发者编译和链接使用 pcre 的程序。
yum install zlib zlib-devel:
zlib
是一个数据压缩库,广泛用于许多软件中,特别是在 web 服务器和应用中用于压缩和解压缩数据。
zlib-devel
是 zlib 的开发包,包含了头文件和静态库,用于开发者编译和链接使用 zlib 的程序。
yum install openssl openssl-devel:
openssl
是一个开放源代码的加密库,实现了 SSL 和 TLS 协议,用于安全地传输数据。
openssl-devel
是 OpenSSL 的开发包,包含了开发所需的头文件和静态库,用于开发者编译和链接使用 OpenSSL 的程序。
yum install pcre pcre-devel yum install zlib zlib-devel yum install openssl openssl--devel
二、安装Nginx
安装之前,最好检查一下是否已经安装有nginx
find -name nginx
如果系统已经安装了nginx,那么就先卸载 注意:如果有之前配置好的 配置文件 请进行备份
yum remove nginx
首先进入/usr/local/src目录
cd /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 [email protected]:/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目录
cd 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
make make install
由于版本的问题编译时大概率会出现错误:
进入nginx-sticky-module-1.1目录
1.根据资料 把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);
2.对ngx_http_sticky_module.c文件也进行修改
修改两个地方
第6行添加:
#include <nginx.h>
第330行左右(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
修改完成后重新编译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
make make install
标签:CentOS,--,module,devel,nginx,peer,sticky From: https://www.cnblogs.com/ankeyliu/p/18286096