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/中
cd /home/nginx_conf/
git clone git://github.com/vozlt/nginx-module-vts.git
添加模塊編譯Nginx
查看當前Nginx編譯參數
shell> nginx -V
nginx version: nginx/1.14.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log
添加模塊編譯
在獲取的編譯參數中再添加需要的模塊
--add-module= PATH
# 這里具體路徑為
--add-module=/home/nginx_conf/module/nginx-module-vts
最終的配置如下
shell>./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log \
--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;
}
}
}
瀏覽器輸入http://your_ip/status
nginx平滑升級
1 下載更新版本的nginx
2 查看老版本的配置
nginx -V
nginx version: nginx/1.14.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log
復制nginx -V的結果進行輸出編譯
./configure --prefix=/usr/local/nginx1.15.1 \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log
//編譯
make && make install
3 重啟Nginx的進程
ngins -s stop
/usr/local/nginx1.15.1/sbin/nginx -tc /usr/local/nginx/conf/nginx.conf
/usr/local/nginx1.15.1/sbin/nginx -s start -c /usr/local/nginx/conf/nginx.conf