# 6. 編譯第三方模塊
#### 1. 介紹
nginx是分成一個個模塊的,比如core模塊,gzip模塊(ngx\_http\_gzip\_static\_module),proxy模塊(ngx\_http\_proxy\_module),每個模塊負(fù)責(zé)不同的功能,例如ngx\_http\_gzip\_static\_module負(fù)責(zé)壓縮,ngx\_http\_proxy\_module負(fù)責(zé)反向代理的請求,除了基本的模塊,有些模塊可以選擇編譯或不編譯進(jìn)nginx。官網(wǎng)文檔中的[Modules reference](http://nginx.org/en/docs/)部分列出了nginx源碼包的所有模塊。我們可以按照自己的需要定制出一個最適合自己的nginx服務(wù)器。假如需要gzip模塊,那在編譯的時候,可以這樣指定。
```
./configure --with-http_gzip_static_module
```
假如不需要fastcgi這個模塊,可以這樣:
```
./configure --without-http_fastcgi_module
```
#### 2. 安裝
除了源碼包提供了各種模塊,nginx還有各種各樣的第三方模塊。官方文檔[NGINX 3rd Party Modules](https://www.nginx.com/resources/wiki/modules/)列出了nginx的很多第三方模塊,除此之外,很多很有用的模塊也能在github等網(wǎng)站上找到。
這些模塊提供著各種各樣意想不到的功能,有時候我們在語言層面辦不好或不好辦的事,交給nginx的第三方模塊,可能會有驚喜。
我們以這個模塊[nginx-module-vts](https://github.com/vozlt/nginx-module-vts)作為例子,來演示一下如果來安裝第三方模塊和簡單的使用。
先把模塊的源碼下載下來。
```
$ git clone git://github.com/vozlt/nginx-module-vts.git
```
配置各種參數(shù),最主要是`--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
# 升級可執(zhí)行文件nginx和重啟服務(wù)
$ 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
```
出現(xiàn)了`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`就可以看到效果了。

可以看到,這個模塊是用來監(jiān)控nginx的運行情況的,比如反向代理的服務(wù)器,cache等情況。
本篇的重點不在于該模塊的使用,具體地可以查看官方readme文檔,后緒會推出其他模塊介紹與使用的文章。
完結(jié)。
- 介紹
- 安裝
- 1. 基本介紹和配置文件語法
- 2. 反向代理
- 3. gzip 壓縮提升網(wǎng)站性能
- 4. 在線升級
- 5. 監(jiān)控工具 ngxtop
- 6. 編譯第三方模塊
- 7. auth_basic 模塊使用
- 8. 日志分析工具
- 9. 用 nginx 搭建谷歌鏡像網(wǎng)站
- 10. 自制啟動腳本
- 11. 日志切割
- 12. 作為負(fù)載均衡器
- 13. 開啟 debug 模式
- 14. gzip static 模塊探索
- 15. 安裝最新 nginx 的另類方法
- 16. 使用 acme.sh 安裝 Let’ s Encrypt 提供的免費 SSL 證書
- 17. 給 GitLab 應(yīng)用加上 https
