nginx-1.24编译安装

1.创建压缩包存放路径

复制代码
[root@localhost /]# mkdir -p /apps/scripts
[root@localhost /]# cd apps/scripts/

2.上传所需文件

3.初始化环境

复制代码
[root@localhost scripts]# yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release openssh-server socat  ipvsadm conntrack telnet ipvsadm vim

4.压缩包解压

复制代码
[root@localhost scripts]# tar -zxf nginx-1.24.0.tar.gz 
[root@localhost scripts]# tar -zxf nginx-module-vts-0.2.2.tar.gz 
[root@localhost scripts]# tar -zxf ngx_brotli.tgz 
[root@localhost scripts]# tar -zxf openssl-1.1.1w.tar.gz 
[root@localhost scripts]# tar -zxf pcre-8.45.tar.gz 
[root@localhost scripts]# tar -zxf zlib-1.3.tar.gz 
[root@localhost scripts]# unzip nginx-sticky-module-ng-08a395c66e42.zip 
[root@localhost scripts]# unzip ngx_http_proxy_connect_module-master.zip

5.检测编译环境 加模块

复制代码
[root@localhost scripts]# cd /apps/scripts/nginx-1.24.0
[root@localhost nginx-1.24.0]# ./configure --prefix=/apps/nginx --modules-path=/apps/nginx/modules --with-compat --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-zlib=/apps/scripts/zlib-1.3  --with-pcre=/apps/scripts/pcre-8.45  --with-openssl=/apps/scripts/openssl-1.1.1w  --add-module=/apps/scripts/nginx-goodies-nginx-sticky-module-ng-08a395c66e42  --add-module=/apps/scripts/nginx-module-vts-0.2.2 --add-module=/apps/scripts/ngx_brotli  

6.编译

复制代码
[root@localhost nginx-1.24.0]# make

出现报错,详细如下:

复制代码
/apps/scripts/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c: In function 'ngx_http_init_sticky_peer':
/apps/scripts/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:207:54: error: 'ngx_http_headers_in_t' has no member named 'cookies'
  if (ngx_http_parse_multi_header_lines(&r->headers_in.cookies, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
                                                      ^
/apps/scripts/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:207:2: error: passing argument 2 of 'ngx_http_parse_multi_header_lines' from incompatible pointer type [-Werror]
  if (ngx_http_parse_multi_header_lines(&r->headers_in.cookies, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
  ^
In file included from /apps/scripts/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:9:0:
src/http/ngx_http.h:106:18: note: expected 'struct ngx_table_elt_t *' but argument is of type 'struct ngx_str_t *'
 ngx_table_elt_t *ngx_http_parse_multi_header_lines(ngx_http_request_t *r,
                  ^
/apps/scripts/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:207:2: error: too few arguments to function 'ngx_http_parse_multi_header_lines'
  if (ngx_http_parse_multi_header_lines(&r->headers_in.cookies, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
  ^
In file included from /apps/scripts/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:9:0:
src/http/ngx_http.h:106:18: note: declared here
 ngx_table_elt_t *ngx_http_parse_multi_header_lines(ngx_http_request_t *r,
                  ^
cc1: all warnings being treated as errors
make[1]: *** [objs/addon/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.o] Error 1
make[1]: Leaving directory `/apps/scripts/nginx-1.24.0'
make: *** [build] Error 2

7.报错处理

查询相关资料,该报错可能是因为nginx版本与ngx_http_proxy_connect_module-master中patch版本不符导致。以下为版本对应图:

参考上述对应图,部署nginx-1.24需指定为proxy_connect_rewrite_102101.patch

安装patch命令

root@localhost nginx-1.24.0# yum -y install patch.x86_64

root@localhost nginx-1.24.0# patch -p1 < /apps/scripts/ngx_http_proxy_connect_module-master/patch/proxy_connect_rewrite_102101.patch

再次:检测编译环境 加模块及编译

依旧报错:

复制代码
/apps/scripts/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c: In function 'ngx_http_init_sticky_peer':
/apps/scripts/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:207:54: error: 'ngx_http_headers_in_t' has no member named 'cookies'
  if (ngx_http_parse_multi_header_lines(&r->headers_in.cookies, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
                                                      ^
/apps/scripts/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:207:2: error: passing argument 2 of 'ngx_http_parse_multi_header_lines' from incompatible pointer type [-Werror]
  if (ngx_http_parse_multi_header_lines(&r->headers_in.cookies, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
  ^
In file included from /apps/scripts/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:9:0:
src/http/ngx_http.h:106:18: note: expected 'struct ngx_table_elt_t *' but argument is of type 'struct ngx_str_t *'
 ngx_table_elt_t *ngx_http_parse_multi_header_lines(ngx_http_request_t *r,
                  ^
/apps/scripts/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:207:2: error: too few arguments to function 'ngx_http_parse_multi_header_lines'
  if (ngx_http_parse_multi_header_lines(&r->headers_in.cookies, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
  ^
In file included from /apps/scripts/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.c:9:0:
src/http/ngx_http.h:106:18: note: declared here
 ngx_table_elt_t *ngx_http_parse_multi_header_lines(ngx_http_request_t *r,
                  ^
cc1: all warnings being treated as errors
make[1]: *** [objs/addon/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ngx_http_sticky_module.o] Error 1
make[1]: Leaving directory `/apps/scripts/nginx-1.24.0'
make: *** [build] Error 2

继续查询相关资料,有一种思路为替换配置文件,尝试一下是否可行

复制代码
[root@localhost nginx-1.24.0]# cd /apps/scripts/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/
[root@localhost nginx-goodies-nginx-sticky-module-ng-08a395c66e42]# 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

再次:检测编译环境 加模块及编译

方法可行,没有报错了

8.安装

复制代码
[root@localhost nginx-1.24.0]# make install

9.验证

相关推荐
海阔天空任鸟飞~3 小时前
Linux 权限 777
linux·运维·服务器
IT瑞先生5 小时前
docker-compose下快速部署实操——持续更新...
运维·docker·容器
无锡银洲自动化5 小时前
工业模拟量采集痛点分析:IDCB-4E/DR/Y测量前端解决方案
运维·产品运营
Kina_C6 小时前
Linux iptables 防火墙原理与实操——从四表五链到 NAT 配置
linux·运维·服务器·iptables
A洛6 小时前
Codex 实战:一句话完成 Temu 商品图采集与印花抠图自动化
运维·人工智能·自动化·codex
Urbano6 小时前
服装工厂卫衣量产提质增效方案:工序自动化替代、产能优化、多品牌设备选型及落地案例
运维·自动化
GlobalSign数字证书7 小时前
自动化时代,如何高效部署SSL证书?
运维·自动化·ssl
大侠锅锅10 小时前
第 19 篇:远程运维体系——指标、SSH、日志与 OTA 升级
运维·ssh
雷工笔记11 小时前
什么是Ubuntu?
linux·运维·ubuntu
公众号:fuwuqiBMC11 小时前
(转自“服务器BMC”)服务器BMC芯片——多Die(芯片)封装
运维·服务器·人工智能