Nginx安裝echo模組
echo-nginx-module
模組可以在Nginx中用來輸出一些資訊,可以用來實現簡單介面或者排錯。
專案地址:https://github.com/openresty/echo-nginx-module
獲取Nginx原始碼
因為需要編譯模組,需要有Nginx原始碼。
如果已安裝Nginx,需要檢視當前安裝版本的編譯引數:
$ /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模組的時候,需要以這個為基礎,增加新的引數。
如果還沒有安裝Nginx,上面可以忽略。
Nginx下載頁面:http://nginx.org/en/download.html
這裡我們以 nginx/1.12.2
為例。需要獲取原始碼:
$ 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),並解壓,不用安裝:
$ cd /opt
$ wget https://github.com/openresty/echo-nginx-module/archive/v0.61.tar.gz
$ tar zxvf v0.61.tar.gz
編譯Nginx
Nginx編譯引數配置:
$ 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.conf
中server
程式碼塊里加入如下程式碼:
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
熱重啟就行了。
參考
1、Nginx安裝Nginx-echo模組 - chen2013 - 部落格園
http://www.cnblogs.com/chenjianxiang/p/8489055.html
2、openresty/echo-nginx-module
https://github.com/openresty/echo-nginx-module#installation
3、Nginx編譯安裝Lua - 飛鴻影~ - 部落格園
https://www.cnblogs.com/52fhy/p/10164553.html