Linux 环境下已安装 nginx 添加扩展第三方动态模块_ngx_http_echo_module.so-程序员宅基地

技术标签: nginx  NGINX  linux  php  

Linux 环境下已安装 nginx 添加扩展第三方动态模块

已经安装好的 nginx ,需要添加一个未被编译安装的模块,如何处理? nginx 的模块是需要重新编译 nginx 并引入该编译文件,而不是像 apache 一样配置文件引用 .so

这里以扩展第三方 echo 模块, echo 模块是在 nginx 程序上扩展了 echo 输出字符的功能, Nginx-echo 可以在 Nginx 中用来输出一些信息,是在测试排错过程中一个比较好的工具。它也可以做到把来自不同链接地址的信息进行一个汇总输出。可以说是学习 nginx 的必备神器。

echo 官方文档页:https://www.nginx.com/resources/wiki/modules/echo/
echo 官方项目地址释出页:https://github.com/openresty/echo-nginx-module/tags

  1. 下载 echo 扩展模块:
[centos@localhost ~]$ cd nginx-1.16.1/
[centos@localhost nginx-1.16.1]$ mkdir echo
[centos@localhost nginx-1.16.1]$ cd echo/
[centos@localhost echo]$ wget https://github.com/openresty/echo-nginx-module/archive/v0.62rc1.tar.gz
[centos@localhost echo]$ tar -zxvf v0.62rc1.tar.gz 

扩展模块下载到任何位置都是可以的,但需要在 configure 的过程引用到解压地址。

  1. 查看 nginx 编译安装时安装的模块:
[centos@localhost echo]$ nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx1.16.1 --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_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-mail=dynamic --with-mail_ssl_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_geoip_module=dynamic --with-stream_ssl_preread_module --with-compat --with-debug
  1. 加入需要安装的模块,重新配置参数。 请注意 ,需要源码。如果 nginx 源码已经缺失,请去官网重新下载相应版本的源码:
[centos@localhost echo]$ cd ..
[centos@localhost nginx-1.16.1]$ ./configure --add-dynamic-module=echo/echo-nginx-module-0.62rc1

请注意 ,使用选项 --add-dynamic-module 动态编译已经在高版本中替代了静态编译 --add-module ,需要 nginx 版本大于 1.19.11 ,通过配置文件可以决定是否启用该模块 load_module=*.so

  1. 执行编译. make 。如果要重新安装,执行安装 make install ,否则,切记不要执行安装:
[centos@localhost nginx-1.16.1]$ make
  1. 替换 nginx 二进制文件:
[centos@localhost nginx-1.16.1]$ sudo cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-bak
[centos@localhost nginx-1.16.1]$ sudo cp ./objs/nginx /usr/local/nginx/sbin/

注意 ,如果是 --add-module 则不用修改文件直接重启即可,所有模块都会被加载。而如果是 --add-dynamic-module 则添加在 nginx.conf 中添加 load_module modules/ngx_http_echo_module.so ;表示启用该模块。如果不想启用,则不添加或加入注释符号 “#”。

  • 如果 nginx 已经启动,请用 nginx -s stop 停止后,再启动或者别的重启 nginx 的方式,不要 nginx -s reload 重新加载配置文件,否则 echo 模块不生效。
  1. 检验:
[centos@localhost echo]$ nginx -V

会查看到 configure arguments: --add-dynamic-module= 参数的存在,其路径命中到 echo 文件路径。


echo 模块的基本使用:

hello world

 location /hello {
    
     echo hello world;
     echo "hello world";
     echo $request_uri; ##输出请求路径uri
 }

延迟后输出

 location /echo_with_sleep {
    
     echo hello;
     echo_sleep;   2.5;  # in sec
     echo world;
 }

重复输出

 location /duphello {
    
     echo_duplicate 1000; 'hello';
 }

处理请求前后加入内容

 location = /api/proxy_before_after {
    
    echo_before_body before;
    proxy_pass http://127.0.0.1:8090;
    echo_after_body after;
 }

nginx 第三方扩展模块官方地址:https://www.nginx.com/resources/wiki/modules/
nginx 动态编译模块官方网站:Converting Static Modules to Dynamic Modules

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43930641/article/details/105878261

智能推荐

Binary XML file line #40: Error inflating class ImageView_binary xml file line #40: binary xml file line #40-程序员宅基地

文章浏览阅读1.6k次。ImageView中src的图片放到mipmap中基本就好了_binary xml file line #40: binary xml file line #40: error inflating class an

MATLAB算法实战应用案例精讲-【图像处理】缺陷检测(附python和matlab实现代码)_matlab缺陷检测代码-程序员宅基地

文章浏览阅读7.6k次。缺陷检测通常是指对物品表面缺陷的检测,表面缺陷检测是采用先进的机器视觉检测技术,对工件表面的斑点、凹坑、划痕、色差、缺损等缺陷进行检测。缺陷检测是工业上非常重要的一个应用,由于缺陷多种多样,传统的机器视觉算法很难做到对缺陷特征完整的建模和迁移,复用性不大,要求区分工况,这会浪费大量的人力成本。深度学习在特征提取和定位上取得了非常好的效果,越来越多的学者和工程人员开始将深度学习算法引入到缺陷检测领域中这种测量方法是在线非接触式检测设备,轮廓测量仪适用于轧制中的长材检测,如圆钢、方钢、螺纹钢、T型钢等,一般的表_matlab缺陷检测代码

CDH大数据平台 rm: cannot remove ‘/var/run/cloudera-scm-agent/process’: Device or resource busy_rm: cannot remove ‘cloudera-scm-agent/process’: de-程序员宅基地

文章浏览阅读309次,点赞7次,收藏6次。rm: cannot remove ‘/var/run/cloudera-scm-agent/process’: Device or resource busy_rm: cannot remove ‘cloudera-scm-agent/process’: device or resource busy

多线程实时数据采集MFC VISUAL C++ /C++_c++多线程数据采集-程序员宅基地

文章浏览阅读3.3k次。美国国家仪器公司为用户提供了许多高性能、高速度、高分辨率的数据采集卡,而与之接口的软件大多采用 Labview,Labview是一种图形化编程软件,你只需拖动控件到容器,使用起来确实比较方便。但用户无法知 道底层的东西,这样针对具体的应用,还要自己去理解封装得很深的函数或程序,费时、费力。因此,c++/MFC还是一种 比较好的选择。如何在MFC中实现实时数据采集呢? 首..._c++多线程数据采集

图像平滑处理_图像平滑处理几种滤波器原理-程序员宅基地

文章浏览阅读2.8k次。文章目录一.均值滤波二.方框滤波三.高斯滤波四.中值滤波五.双边滤波2D卷积图像平滑处理,又叫做平滑滤波,或模糊滤波,能有效的过滤掉图像内部的噪声。其基本原理是图像像素点的值处理为邻域内其他像素点的均值。取近似的方法,即平滑滤波的方法多种多样。在空间滤波中,事先定义一个掩模,然后将掩模逐步移过像素点,掩模中心即当前像素点的值为掩模内所有像素点的值通过某种方式计算得到,掩模大小可以根据情况选择。但对于边界的点,由于其掩模有一部分在图像外围,所以此时要对其做一些特殊处理,常见的处理方法:(1)控制掩模,._图像平滑处理几种滤波器原理

jenkins调用shell脚本实现自动上线完整项目---此项目中用到了git parameter、choise parameter参数化构建(五)_jenkins shell脚本-程序员宅基地

文章浏览阅读1k次,点赞6次,收藏6次。利用jenkins自动部署完整项目1.环境规划主机ipJenkins192.168.81.220gitlab192.168.81.210lb192.168.81.230web01192.168.81.240web02192.168.81.2502.gitlab新建monitor项目2.1.配置Jenkins服务器公钥[root@jenkins ~]# cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EA_jenkins shell脚本

随便推点

占位式插件化一Activity的跳转_activity跳转 插件-程序员宅基地

文章浏览阅读329次。原理宿主APP安装在手机中的APP,并且通过该APP加载插件中的Activity插件APP没有安装的apk,通过宿主直接打开其内部Activity标准(协议)宿主APP和插件APP通信的桥梁。宿主APP通过一个空壳Activity(代理Activity)加载插件app中的Activity,实际上插件app中的Activity并没有入栈,也没法入栈,因为插件app没有安装,没有上下文和..._activity跳转 插件

PTA 剥洋葱(C语言 + 详细注释 + 代码超简单)_c语言pta怎么使用-程序员宅基地

文章浏览阅读1.0k次,点赞9次,收藏13次。输入格式:一行,一个整数,即图形的层数输出格式:如上述图形输入样例:3输出样例:AAAAAABBBAABCBAABBBAAAAAA//打印图形题关键是找规律,一般只需两重循环(行循环、列循环)#include<stdio.h>#include<string.h>int main() { int i, n; char ..._c语言pta怎么使用

docker配置国内镜像源_docker国内镜像源-程序员宅基地

文章浏览阅读3.3w次,点赞9次,收藏25次。刚开始学习docker,发现下载镜像非常的慢。如果不经过,docker的镜像下载都来源于国外,因此需要配置国内的镜像源。Docker中国区官方镜像。_docker国内镜像源

Unity中怎么播放视频_unity 播放视频-程序员宅基地

文章浏览阅读1.9w次,点赞40次,收藏209次。一.首先在场景中新建UI中的Raw Image可以按住Alt再点击下图红色箭头所示将Raw Image铺满游戏全屏(也可以自己调整大小)二.给Raw Image添加Video Player组件三.在Assets或者自己想要的文件夹中创建Render Texture四.将准备好的视频(这里用到的视频格式是mp4)拖入项目中并做如下修改这里我把新建的Render Texture命名为2,拖入的视频也命名为2(随便命的,不要在意)这里我们看到这个Render Te..._unity 播放视频

使用BOOTICE 恢复系统启动项_bootice保存后没用-程序员宅基地

文章浏览阅读9.7k次,点赞2次,收藏9次。使用BOOTICE 恢复系统启动项我在安装deepin 系统的时候,经常遇到重启进不去系统,每次重启都会进入windows 系统,这让我感到特别头疼,试了好多次都不成功,有些情况是,成功后再次重启又回到了windows系统。后来终于在PE中利用一款叫做BOOT ICE的工具成功解决。BOOTICE— 引导扇区维护工具简介BOOTICE 是一个启动相关的维护的小工具,主要用于安装、修复、备份和恢复磁盘_bootice保存后没用

文本分类与SVM_svm分类-程序员宅基地

文章浏览阅读9.5w次,点赞54次,收藏202次。之前做过一些文本挖掘的项目,比如网页分类、微博情感分析、用户评论挖掘,也曾经将libsvm进行包装,写了一个文本分类的开软软件Tmsvm。所以这里将之前做过一些关于文本分类的东西整理总结一下。1 基础知识1. 1 样本整理文本分类属于有监督的学习,所以需要整理样本。根据业务需求,确定样本标签与数目,其中样本标签多为整数。在svm中其中如果为二分类,样本标签一般会设定为-1和_svm分类