当前位置: 首页 > article >正文

nginx增加新模块

一、动态增加第三方模块(不需要停止nginx进程就可以增加新模块。只需要reload)

NGINX 从1.9.11开始增加动态模块支持,从此不再需要替换nginx文件即可增加第三方扩展。目前官方只有9个模块支持动态加载,其它的第三方模块还是需要使用传统方式安装。
这九个支持动态加载的模块分别是:
在这里插入图片描述
动态方式举例:
1、nginx当前版本1.11.13(nginx已安装)

# /alidata/nginx/sbin/nginx -v
nginx version: nginx/1.13.7

2、查看之前的安装模块

# /alidata/nginx/sbin/nginx -V
nginx version: nginx/1.13.7
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/alidata/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_flv_module --with-http_mp4_module --with-pcre=/usr/src/pcre-8.12/ --add-module=/soft/soft/ngx_http_substitutions_filter_module/ --add-module=/soft/soft/ngx_http_google_filter_module

3、进入nginx源码安装包

# cd /usr/src/nginx-1.13.7/
# ls
auto     CHANGES.ru  configure  html     Makefile  objs              README
CHANGES  conf        contrib    LICENSE  man       pcre-8.12.tar.gz  src

4、动态增加tcp反向代理模块–with-stream=dynamic (这个模块和第三方模块nginx_tcp_proxy_module-master是一样的)

# ./configure  --prefix=/alidata/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_flv_module --with-http_mp4_module --with-pcre=/usr/src/pcre-8.12/ --add-module=/soft/soft/ngx_http_substitutions_filter_module/ --add-module=/soft/soft/ngx_http_google_filter_module --with-stream=dynamic
# make #这里只做编译,千万不要make install

5、查看当前目录的 objs/ 目录下会生成一个.so文件[ngx_stream_module.so]

# ls objs/
addon         nginx              ngx_auto_headers.h  ngx_stream_module_modules.c  src
autoconf.err  nginx.8            ngx_modules.c       ngx_stream_module_modules.o
Makefile      ngx_auto_config.h  ngx_modules.o       ngx_stream_module.so

6、在nginx的安装目录下创建modules目录,并将这个.so文件移动到 modules目录下

# cd /alidata/nginx/
# mkdir modules                    #存在就不用创建了
# chown nginx.nginx modules
# cp /usr/src/nginx-1.13.7/objs/ngx_stream_module.so  /alidata/nginx/modules/

7、将模块加载到nginx主配置文件中,并添加tcp的配置

# vi /alidata/nginx/conf/nginx.conf
load_module modules/ngx_stream_module.so;     #加载模块


events {
    ......
}
#-------------------- HTTP -------------------------------
http {
    ......
}

#tcp和http是同等级的,这里只做tcp反向代理配置
#-------------------- TCP/UDP -------------------------------
#include /alidata/nginx/tcp.d/*.conf;      #也可以将tcp的配置指向单独的配置文件




stream {                                   #stream是固定写法,代表这是tcp协议,如果是通过第三方模块【nginx_tcp_proxy_module】安装的这里就换成tcp


    upstream proxy_swoole {
        server 172.16.100.17:8090;
    }


    server {
       listen 10001;            #访问http://ip:10001 跳转到172.16.100.17:8089
       proxy_connect_timeout 1s;
       proxy_timeout 3s;
       proxy_pass proxy_swoole;
    }
}


说明一点:

tcp {                                              #tcp表示通过第三方模块传统安装nginx_tcp_proxy_module


        upstream cluster {
                server localhost:2000;
                server localhost:3000;
        }
        server{
                listen 8080;
                proxy_pass cluster;
        }
}


--------------------------------------------------------------------------
stream {                                            #表示通过第三方模块动态安装 --with-stream=dynamic
        upstream cluster {
                server localhost:2000;
                server localhost:3000;
        }
        server{
                listen 8080;
                proxy_pass cluster;
        }
}

8、重新加载nginx服务

# /alidata/nginx/sbin/nginx -s reload
# netstat -npult|grep nginx
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      34716/nginx         
tcp        0      0 0.0.0.0:10001               0.0.0.0:*                   LISTEN      34716/nginx         
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      34716/nginx  

9、访问http://172.16.12.9:10001,能访问到说明跳转成功
在这里插入图片描述

二、传统方式增加第三方模块(不需要停止nginx进程就可以增加新模块。只需要reload)

传统方式举例:
1、查看之前nginx安装了哪些模块和使用了哪些参数(之后编译要使用这些参数)

# /alidata/nginx/sbin/nginx  -V
nginx version: nginx/1.11.13
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/alidata/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_flv_module --with-http_mp4_module --with-pcre=/usr/src/pcre-8.12/

2、下载第三方模块

# yum -y install git
# cd /soft/soft/
# git clone https://github.com/cuber/ngx_http_google_filter_module
# ls -lh                            
#这是下载的模块(它是个目录)
drwxr-xr-x 4 root root 4.0K 6月   7 19:24 ngx_http_google_filter_module

3、找到nginx源码包的解压路径

# cd /usr/src/nginx-1.11.13
# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src

4、根据之前的参数重新编译nginx但不安装(注:千万不要执行make install)

#添加新的模块参数
# ./configure --prefix=/alidata/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_flv_module --with-http_mp4_module --with-pcre=/usr/src/pcre-8.12/  --add-module=/soft/soft/ngx_http_substitutions_filter_module/  --add-module=/soft/soft/ngx_http_google_filter_module


#只编译,不安装
# make  

5、替换 nginx 启动文件

# 重命名旧的nginx启动文件
# mv /alidata/nginx/sbin/nginx  /alidata/nginx/sbin/nginx.bak
  
# 拷贝新生成的nginx启动文件(objs目录在源码包解压目录下)
# cp /usr/src/nginx-1.11.13/objs/nginx /alidata/nginx/sbin/
 

#重新加载nginx进程
# /alidata/nginx/sbin/nginx -s reload

6、将此次编译参数记录,防止下次查看nginx -V 不准确。


http://www.kler.cn/a/501669.html

相关文章:

  • Realsense相机驱动安装及其ROS通讯配置——机器人抓取系统系列文章(四)
  • 【2024年华为OD机试】(C卷,100分)- 攀登者1 (Java JS PythonC/C++)
  • esp32在编译是报错在idf中有该文件,但是说没有
  • 线形回归与小批量梯度下降实例
  • elementUI项目中,只弹一个【token过期提示】信息框的处理
  • selenium学习笔记
  • Python orjson ujson有什么区别?
  • 【DevOps】Jenkins使用Pipeline构建java代码
  • AIGC是什么?怎么用?简单三步ToDesk云电脑快速用
  • 前端学习-焦点事件以及键盘事件与典型案例(二十五)
  • Node.js——http 模块(二)
  • (Arxiv-2023)LORA-FA:针对大型语言模型微调的内存高效低秩自适应
  • 软件系统安全逆向分析-混淆对抗
  • HTML + CSS:如何强制div内容保持一行?
  • 26个开源Agent开发框架调研总结(2)
  • 如何使用高性能内存数据库Redis
  • 基于异步IO的io_uring
  • 【论文阅读+复现】High-fidelity Person-centric Subject-to-Image Synthesis
  • HAMi + prometheus-k8s + grafana实现vgpu虚拟化监控
  • 【Spring Boot 应用开发】-01 初识
  • 夯实前端基础之CSS篇
  • Edge浏览器内置的截长图功能
  • 品牌账号矩阵如何打造?来抄作业
  • Vue3.5 企业级管理系统实战(一):项目初始搭建与配置
  • 16_Redis Lua脚本
  • uniapp实现H5页面内容居中与两边留白,打造类似微信公众号阅读体验