Nginx安裝echo模塊

echo-nginx-module 模塊能夠在Nginx中用來輸出一些信息,能夠用來實現簡單接口或者排錯。html

項目地址:https://github.com/openresty/echo-nginx-modulenginx

獲取Nginx源碼

由於須要編譯模塊,須要有Nginx源碼。git

若是已安裝Nginx,須要查看當前安裝版本的編譯參數:github

$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module

其中configure arguments這個參數是很是重要的,咱們在後面安裝Lua模塊的時候,須要以這個爲基礎,增長新的參數。bash

若是尚未安裝Nginx,上面能夠忽略。curl

Nginx下載頁面:http://nginx.org/en/download.html測試

這裏咱們以 nginx/1.12.2 爲例。須要獲取源碼:ui

$ cd /opt/
$ wget http://nginx.org/download/nginx-1.12.2.tar.gz
$ tar -zxvf nginx-1.12.2.tar.gz

安裝取echo-nginx-module

獲取echo-nginx-module

咱們下載最新穩定版(截止到2018-12-23),並解壓,不用安裝:url

$ cd /opt
$ wget https://github.com/openresty/echo-nginx-module/archive/v0.61.tar.gz
$ tar zxvf v0.61.tar.gz

編譯Nginx

Nginx編譯參數配置:rest

$ cd /opt/nginx-1.12.2/
$ ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module  --add-module=/opt/echo-nginx-module-0.61

這裏由於已經安裝了Nginx,因此這裏的參數是從Nginx -V的輸出裏獲取的,並追加了新的參數:

--add-module=/opt/echo-nginx-module-0.61

運行上面的./configure後進行編譯安裝:

$ make -j2
$ make install

make install後,會覆蓋以前安裝的Nginx。

測試echo模塊

/usr/local/nginx/conf/nginx.confserver代碼塊里加入以下代碼:

location /hello { 
    default_type 'text/plain';
    return 200 'hello!';
}

location /hello_echo { 
    default_type 'text/plain'; 
    echo "hello, echo!";
}

注意:從新編譯 Nginx 二進制,Nginx 須要中止重啓。而普通配置更新則 reload 便可:

$ kill -QUIT `cat /usr/local/nginx/logs/nginx.pid` && /usr/local/nginx/sbin/nginx

若是支持service nginx restart,則能夠這樣從新啓動:

$ service nginx restart && /usr/local/nginx/sbin/nginx -s reload

而後curl測試:

$ curl http://127.0.0.1/hello
hello!

$ curl http://127.0.0.1/hello_echo
hello, echo!

固然, echo-nginx-module 模塊不單單是提供echo這麼簡單的指令,還有其它的指令,詳見:https://github.com/openresty/echo-nginx-module#content-handler-directives

編譯動態模塊

echo-nginx-module 支持以動態模塊方式加載,詳見:https://github.com/openresty/echo-nginx-module#installation 。Nginx版本須要 >=1.9.11

$ cd /opt/nginx-1.12.2/
$ ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module  --add-dynamic-module=/opt/echo-nginx-module-0.61

$ make -j2
$ make install

相比靜態編譯,參數--add-module改爲了--add-dynamic-module

編譯成功後,會把模塊安裝在nginx/modules/目錄。查看:

$ ls /usr/local/nginx/modules/
ngx_http_echo_module.so

接下來咱們須要在nginx.conf配置中加入如下兩行,實現動態調用模塊:

load_module /usr/local/nginx/modules/ngx_http_echo_module.so;

注意:load_module指令不能放在 http{} 裏面:

worker_processes  1;

load_module xxx;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {

}

接下來能夠按上面的 測試echo模塊 小節測試。惟一不一樣的是無需使用kill -QUIT退出Nginx,直接使用nginx -s reload熱重啓就好了。

參考

一、Nginx安裝Nginx-echo模塊 - chen2013 - 博客園
http://www.cnblogs.com/chenjianxiang/p/8489055.html
二、openresty/echo-nginx-module
https://github.com/openresty/echo-nginx-module#installation
三、Nginx編譯安裝Lua - 飛鴻影~ - 博客園
http://www.javashuo.com/article/p-uyselemm-dh.html

相關文章
相關標籤/搜索