美文网首页
Nginx模块

Nginx模块

作者: 全栈小运维 | 来源:发表于2020-03-27 17:58 被阅读0次

一、编译添加新模块

1.简介与思路

当前适用于nginx已经在安装过了,如果没安装过,直接在编译时候添加模块即可。

Nginx主要程序就是nginx这个二进制脚本,只要在编译一个nginx脚本替换掉原来的即可。当前操作是添加echo这个模块。

2.环境准备

系统:centos7.4一台
软件版本:1.6.0
部署目录:/usr/local/nginx

3.安装

1)echo模块可以输出文字,下载解压即可

[root@nginx ~]# wget https://github.com/openresty/echo-nginx-module/archive/v0.60.tar.gz
[root@nginx ~]# tar xf v0.60.tar.gz

建立一个模块仓库,因为添加模块后,那个文件夹要位置固定,不能删除的

[root@nginx ~]# mkdir /usr/local/nginx/module
[root@nginx ~]# mv echo-nginx-module-0.60 /usr/local/nginx/module/

2)查询当前nginx编译模块

[root@nginx ~]# nginx -V

3)找到nginx源码包目录,将原来的都填写上,最后—add-module是添加模块,指定模块文件夹位置即可

[root@nginx ~]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre --add-module=/usr/local/nginx/module/echo-nginx-module-0.60/

4)编译,不要install,不然覆盖了,注意看状态,最后没有error就行了

[root@nginx ~]# make

5)替换
make后将在当前nginx源码文件夹下有个objs文件夹,里面有个nginx这个文件,这个就是nginx -V时用的命令
备份命令

[root@nginx ~]# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

替换掉

[root@nginx ~]# cp objs/nginx /usr/local/nginx/sbin
4.使用验证

1)进到脚本目录

[root@nginx ~]# cd /usr/local/nginx/sbin

2)检查配置文件是否显示ok

[root@nginx ~]# nginx -t

3)重新加载配置

[root@nginx ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

4)重新加载

[root@nginx ~]# nginx -s reload

5)检查是否编译进去,和原来的做对比。

[root@nginx ~]# nginx -V

二、yum添加新模块

1.简介

有的Nginx是yum安装的,这时候要添加新模块就比较麻烦了。

原理:

找一个同版本的nginx源码包,将nginx这个命令编译出来,和yum的替换即可。

2.配置
找一个同版本的nginx源码包
记录好原先yum安装的nginx都有哪些模块 nginx -V查看
然后将同版本nginx源码包进行编译
./configure - -之前nginx -V查看的参数 添加你需要新加入的参数  - -prefix=/tmp/nginx或者一个临时目录
make
make install
将/tmp/nginx/bin/nginx 复制出来
将/usr/bin/nginx 进行备份或者直接mv
然后将/tmp/nginx/bin/nginx 复制到/usr/bin下面
现在nginx -V 就是正确的了。

三、监控模块

1.介绍

Nginx中的stub_status模块主要用于查看Nginx的一些状态信息.
当前默认在nginx的源码文件中,不需要单独下载.

2.使用

本模块默认是不会编译进Nginx的,如果你要使用该模块,则要在编译安装Nginx时指定:
./configure –-with-http_stub_status_module
在server板块中添加一个location,访问127.0.0.1/nginx-status将会出现状态信息,里面记录nginx处理链接数等等。

#放在某个开放的server区块,填写一个location
server{
         location /nginx-status {
             allow -------- #允许的ip,不然都能看了,一般允许本地
             deny all; #默认最后全拒绝,除了allow的
             stub_status on;
             access_log  off;
        }
}
3.参数

然后请求www.domain.com/nginx-status 就行了,下面是结果

Active connections: 5
server accepts handled requests
 5970806143 5970806143 7560482010
Reading: 0 Writing: 5 Waiting: 0
Active connections: 对后端发起的活动连接数.
Server accepts handled requests: Nginx总共处理了38810620个连接,成功创建38810620次握手(证明中间没有失败的),总共处理了298655730个请求.
Reading: Nginx 读取到客户端的Header信息数.
Writing: Nginx 返回给客户端的Header信息数.
Waiting: 开启keep-alive的情况下,这个值等于 active – (reading + writing),意思就是Nginx已经处理完成,正在等候下一次请求指令的驻留连接.
所以,在访问效率高,请求很快被处理完毕的情况下,Waiting数比较多是正常的.如果reading +writing数较多,则说明并发访问量非常大,正在处理过程中.

四、健康检查

1.介绍

大家都知道,前端nginx做反代,如果后端服务器宕掉的话,nginx是不能把这台realserver剔除upstream的,所以还会有请求转发到后端的这台realserver上面去,虽然nginx可以在localtion中启用proxy_next_upstream来解决返回给用户的错误页面,但这个还是会把请求转发给这台服务器的,然后再转发给别的服务器,这样就浪费了一次转发,这次借助与淘宝技术团队开发的nginx模快nginx_upstream_check_module来检测后方realserver的健康状态,如果后端服务器不可用,则所以的请求不转发到这台服务器

2.使用

1)下载,当前下载0.3版本
wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/v0.3.0.tar.gz --add-module=/xxx
2)添加
在http区块添加

upstream web_pool {
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

在server区块添加

server {
    listen 80;
    server_name xx;
location / {
    proxy_pass http://web_pool;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}
location /status { #可以图形查询到节点状态和一些信息
    check_status; #访问http://xxxx/status可以查询
    access_log off;
    #allow all;
    #deny all;
}
3.参数

1)upstream

upstream web_pool {
    zone test_pool 64k;
    server 192.168.1.128:8080;
    server 192.168.1.129:8080;
    check interval=3000 rise=2 fall=3 timeout=3000 type=http;
    #interval检测间隔时间,默认毫秒,当前3秒
    #rise表示请求2次,正常认为节点正常
    #fall表示请求失败3次,则认为节点失败
    #timout超时时间,默认毫秒,当前3秒
    #type,类型,当前http类型
    check_http_send "GET /status.html HTTP/1.0\r\n\r\n";
    check_http_expect_alive http_2xx http_3xx;
    #分发节点轮询检测后端节点的url/status.html ,如果返回2xx或者3xx认为正常,否则认为失败一次
}

五、输出模块

1.简介

官网
Nginx-echo可以在Nginx中用来输出一些信息,是在测试排错过程中一个比较好的工具。它也可以做到把来自不同链接地址的信息进行一个汇总输出。总之能用起来可以给开发人员带来挺大帮助的。下面看看我们如何去安装使用它。

二.使用

1.下载,这里下载0.56版本

wget https://github.com/openresty/echo-nginx-module/archive/v0.59.tar.gz

编辑参数添加如下,/xxx是文件解压后的路径
--add-module=/xxx

2.在location板块添加
        location / {
            echo “撒大大”;
        }

相关文章

  • 6.Nginx模块学习方法

    Nginx模块 Nginx模块分为 Nginx官方模块 和 第三方模块 , 这里我们拿Nginx官方模块来介绍一下...

  • Nginx核心模块以及指令介绍

    Nginx模块概览 Nginx核心模块以及指令介绍 注意:Nginx的核心模块包含主模块和事件模块,即上图的cor...

  • 应用运维面试核心

    面试题 Nginx模块 你以前用过哪些Nginx模块? upstream 是Nginx负载均衡模块 image ...

  • nginx内核原理

    Nginx的模块 Nginx由内核和模块组成。 Nginx的模块从结构上分为核心模块、基础模块和第三方模块: 核心...

  • nginx 源代码分析 (二)

    1. nginx模块 nginx的功能分布在nginx模块中,一个模块为一个功能单元。每个nginx模块都专注于自...

  • nginx 动态添加模块

    需要用到nginx的tcp模块,以前安装的nginx没有这个模块。 ./nginx -V 可以看到所有包含的模块(...

  • 8.nginx模块介绍

    nginx的模块 1.编译进nginx的模块2.提供那些配置3.模块合适被使用4.提供那些变量 查找nginx模块...

  • nginx 2

    1 nginx 常用模块整理 nginx 常用模块整理1 http核心模块 ngx_http_core_modu...

  • centos7 使用nginx上传文件

    安装nginx以及nginx-upload-module模块 下载nginx源码,添加模块只支持源码编译:wget...

  • nginx与lvs详解

    详细描述常见nginx常用模块和模块的使用示例 nginx常见的模块分类: 核心模块:core moduleNgi...

网友评论

      本文标题:Nginx模块

      本文链接:https://www.haomeiwen.com/subject/mwkruhtx.html