龙空技术网

Nginx添加第三方模块并平滑升级

IT生涯 1284

前言:

今天各位老铁们对“nginx增加新模块”大约比较注意,你们都需要了解一些“nginx增加新模块”的相关资讯。那么小编在网上网罗了一些对于“nginx增加新模块””的相关知识,希望大家能喜欢,小伙伴们一起来学习一下吧!

Nginx 添加第三方模块

众所周知Nginx是分成一个个模块的,比如core模块,gzip模块,proxy模块,每个模块负责不同的功能,除了基本的模块,有些模块可以选择编译或不编译进Nginx。官网文档中的Modules reference部分列出了nginx源码包的所有模块。我们可以按照自己服务器的需要来定制出一个最适合自己的Nginx服务器。

除了Nginx官网源码包提供了各种模块,Nginx还有各种各样的第三方模块。官方文档NGINX 3rd Party Modules也列出了Nginx的很多第三方模块,除此官网列出的之外,还有很多很有用的模块也能在Github等网站上找到。

这些模块提供着各种各样意想不到的功能,灵活使用Nginx的第三方模块,可能会有非常大的意外收获。

本篇文章以GitHub上的nginx-module-vts作为例子,此模块可以监控Nginx虚拟主机流量以及状态,下面我们来看一下第三模块的安装以及简单的使用。

下载第三方模块

下载的模块存放在/home/nginx_conf/中

shell> cd /home/nginx_conf/shell> git clone git://github.com/vozlt/nginx-module-vts.git

添加模块编译Nginx

查看当前Nginx编译参数

shell> /usr/local/nginx/sbin/nginx -V

如果觉得每次操作Nginx都需要携带Nginx的PATH比较烦,你可以将Nginx的PATH添加到环境变量中

shell> cd /etc/profile.d/shell> vi nginx.sh

在 nginx.sh中添加如下内容

export NGINX_HOME=/usr/local/nginxexport PATH=$NGINX_HOME/sbin:$PATH

保存nginx.sh后使其配置生效

shell> source /etc/profile

下面就可以在任意目录中执行nginx命令不用携带PATH了

shell> nginx -V nginx version: nginx/1.14.0built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)built with OpenSSL 1.0.2k-fips 26 Jan 2017TLS SNI support enabledconfigure arguments: --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-file-aio --with-http_realip_module

添加模块编译

在获取的编译参数中再添加需要的模块

 --add-module= PATH # 这里具体路径为 --add-module=/home/nginx_conf/module/nginx-module-vts

最终的配置如下

shell>./configure \--with-http_gzip_static_module \--with-http_stub_status_module \--with-http_ssl_module \--with-pcre \--with-file-aio \--with-http_realip_module \--add-module=/home/nginx_conf/module/nginx-module-vts

执行编译命令:make,注意编译之后千万不能执行make install

编译完后,当前nginx源码目录下生成objs目录则说明编译成功

覆盖Nginx执行脚本

备份当前nginx执行脚本,命令:cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak。如果拷贝出错,则将nginx进行杀掉再进行,命令:killall nginx 或者 nginx -s stop

拷贝上一步骤编译后的新nginx脚本,命令:cp /home/software/nginx-1.14.0/objs/nginx /usr/local/nginx/sbin/

在 home/software/nginx-1.14.0/下载执行make upgrade 平滑升级Nginx

查看编译参数,命令:nginx -V,如果编译参数中存在刚添加的模块,则说明编译成功

使用第三方模块

http { vhost_traffic_status_zone; ... server { ... location /status { vhost_traffic_status_display; vhost_traffic_status_display_format html; } }}

浏览器输入

思考:

这个监控Nginx服务器运行情况的模块。只要用户在浏览器输入,就可以访问监控页面。这样很不安全,因为任何人都可以访问这个页面。是否可以再添加一个授权模块呢?

标签: #nginx增加新模块