世界上最伟大的投资就是投资自己的教育

首页Nginx
随风 · 练气

Nginx 学习笔记系列文章之 Nginx 之编译第三方模块 (六)

随风发布于4179 次阅读

1. 介绍

nginx 是分成一个个模块的,比如 core 模块,gzip 模块 (ngx_http_gzip_static_module),proxy 模块 (ngx_http_proxy_module),每个模块负责不同的功能,例如 ngx_http_gzip_static_module 负责压缩,ngx_http_proxy_module 负责反向代理的请求,除了基本的模块,有些模块可以选择编译或不编译进 nginx。官网文档中的Modules reference部分列出了 nginx 源码包的所有模块。我们可以按照自己的需要定制出一个最适合自己的 nginx 服务器。假如需要 gzip 模块,那在编译的时候,可以这样指定。

./configure --with-http_gzip_static_module

假如不需要 fastcgi 这个模块,可以这样:

./configure --without-http_fastcgi_module

2. 安装

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

这些模块提供着各种各样意想不到的功能,有时候我们在语言层面办不好或不好办的事,交给 nginx 的第三方模块,可能会有惊喜。

我们以这个模块nginx-module-vts作为例子,来演示一下如果来安装第三方模块和简单的使用。

先把模块的源码下载下来。

$ git clone git://github.com/vozlt/nginx-module-vts.git

配置各种参数,最主要是--add-module那一行。

./configure \
--user=nginx                          \
--group=nginx                         \
--prefix=/etc/nginx                   \
--sbin-path=/usr/sbin/nginx           \
--conf-path=/etc/nginx/nginx.conf     \
--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-http_gzip_static_module        \
--with-http_stub_status_module        \
--with-http_ssl_module                \
--with-pcre                           \
--with-file-aio                       \
--with-http_realip_module             \
--without-http_scgi_module            \
--without-http_uwsgi_module           \
--without-http_fastcgi_module         \
--add-module=/home/yinsigan/nginx-module-vts

--add-module是接刚才下载的模块的绝对路径。

编译安装。

$ make
$ sudo make install
# 升级可执行文件nginx和重启服务
$ sudo make upgrade

要检测是否成功安装的话,使用nginx -V命令即可。

$ nginx -V
nginx version: nginx/1.8.0
built by gcc 4.8.2 (Ubuntu 4.8.2-19ubuntu1) 
built with OpenSSL 1.0.1f 6 Jan 2014
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --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-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-file-aio --with-http_realip_module --without-http_scgi_module --without-http_uwsgi_module --without-http_fastcgi_module --add-module=/home/yinsigan/codes/nginx-module-vts --add-module=/home/yinsigan/codes/nginx-module-url

出现了nginx-module-vts,说明安装成功了。

这是添加一种 module 的情况,假如需要添加很多个 module 呢,那就再增加一个--add-module 就好了。

3. 使用

语法很简单,分别在 http 和 server 部分添加几行指令。

http {
    vhost_traffic_status_zone;

    ...

    server {

        ...

        location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
    }
}

运行sudo nginx -s reload让配置生效。之后通过浏览器访问http://127.0.0.1/status就可以看到效果了。

可以看到,这个模块是用来监控 nginx 的运行情况的,比如反向代理的服务器,cache 等情况。

本篇的重点不在于该模块的使用,具体地可以查看官方 readme 文档,后绪会推出其他模块介绍与使用的文章。

完结。

本站文章均为原创内容,如需转载请注明出处,谢谢。

0 条回复
暂无回复~~
相关小书
nginx教程

nginx教程

最全面,最深入的nginx入门到精通的教程

发表于

喜欢
统计信息
    学员: 29003
    视频数量: 1973
    文章数量: 489

© 汕尾市求知科技有限公司 | Rails365 Gitlab | Qiuzhi99 Gitlab | 知乎 | b 站 | 搜索

粤公网安备 44152102000088号粤公网安备 44152102000088号 | 粤ICP备19038915号

Top