首页 > 在CentOS 6.9 x86_64的nginx 1.12.2上开启echo-nginx-module模块实录

在CentOS 6.9 x86_64的nginx 1.12.2上开启echo-nginx-module模块实录

echo-nginx-module是一个第三方模块,在nginx源码中没有,但是OpenResty中有,它为nginx.conf带来了echo,sleep,time等多个类似bash的强大命令。

目前最新版本是v0.61



安装指南参见

https://github.com/openresty/echo-nginx-module#installation



配置

    server {listen 8081;server_name localhost;location /test {set $foo hello;echo "foo: $foo";}location /test1 {set $first "hello ";echo "${first}world";}location /foo {echo "foo = [$foo]";}location /bar {set $foo 32; echo "bar = [$foo]";}}   
完整的nginx.conf如下:

https://github.com/taoyunxing/github_test/blob/master/nginx.conf



下载源码

cd /usr/local/src

git clone https://github.com/openresty/echo-nginx-module.git



cd nginx-1.12.2

./configure --with-http_ssl_module

--with-pcre=/usr/local/src/pcre-8.41

--with-zlib=/usr/local/src/zlib-1.2.11

--with-openssl=/usr/local/src/openssl-1.1.0g

--with-http_stub_status_module

--add-module=/usr/local/src/ngx_cache_purge

--add-module=/usr/local/src/ngx_req_status

--add-module=/usr/local/src/echo-nginx-module

make

make install



这个例子也给出了OpenResty中的模块如何编译进社区最新版nginx中去的方法。我起初看到OpenResty中的模块目录比较怪异,以为还需要自己调整目录结构再整合到nginx中,其实是没有必要的。



安装完成之后,检查nginx.conf的完整性并重启nginx

/usr/local/nginx/sbin/nginx -t

/usr/local/nginx/sbin/nginx -s stop

/usr/local/nginx/sbin/nginx



测试请求

curl -v 'http://localhost:8081/test'



curl -v 'http://localhost:8081/test1'



curl -v 'http://localhost:8081/foo'



curl -v 'http://localhost:8081/bar'



特殊说明

上面仅是最基本的用法,还有很多高级的用法有待后续深入探索时再补充上来。

下面是做得补充。

    server {listen 8082;server_name localhost;location /foo {set $a hello;echo_exec /bar;}location /foo1 {set $a hello;rewrite ^ /bar;}location /bar {echo "a = [$a]";}}   
更新nginx.conf之后,执行下面的命令检查

curl -v 'http://localhost:8082/foo'



curl -v 'http://localhost:8082/foo1'





下面是更进一步的例子

因为对内建变量 $args 的修改会直接导致当前请求的 URL 参数串发生变化,因此内建变量 $arg_XXX 自然也会随之变化。

    location /test3 {set $orig_a $arg_a;set $args "a=5";echo "original a: $orig_a";echo "a: $arg_a";}
curl 'http://localhost:8082/test3?a=3'



    server {listen 8083;server_name localhost;location /test {set $args "foo=1&bar=2";proxy_pass http://127.0.0.1:8084/args;}}server {listen 8084;server_name localhost;location /args {echo "args: $args";}}
curl -v 'http://localhost:8083/test?blah=7'



父子请求之间的变量共享

    location /main {echo_location /foo2;echo_location /bar2;}location /foo2 {echo foo2;}location /bar2 {echo bar2;}
curl 'http://localhost:8082/main'



    location /main3 {set $var main;echo_location /foo3;echo_location /bar3;echo "main: $var";}location /foo3 {set $var foo;echo "foo: $var";}location /bar3 {set $var bar;echo "bar: $var";}


curl -v 'http://localhost:8082/main3'



参考文献

[1].https://github.com/openresty/echo-nginx-module

[2].http://blog.sina.com.cn/s/blog_6d579ff40100wi7p.html





更多相关:

  • 毕业之际给学校搭建了基于ATS的正向代理缓存服务器,专门用来处理优酷土豆等在线视频流量。通过改写一个浏览器做成在线视频专用浏览器,内置了ATS的代理设置。 用php配合memcacheq和小脚本实现了简单的异步预热功能,在实际运用中安全性请自行考虑完善。 工作方式:PHP页面提交URL——>memcacheq<——shell脚...

  • 好久不写shell脚本,有些生疏。总结下shell的语法,以便后续参考,快速捡起来。 shell 脚本执行的3种方式: 1). ./xx.sh (xx.sh 需要有执行权限) 2). source xx.sh 3). bash xx.sh 变量定义 var=2 //注意:=左右没有空格 变量引用的2种方式 $符号就是变量解引用...

  • 作者:荒原之梦 原文链接:http://zhaokaifeng.com/?p=538 前言: “Ping”属于ICMP协议(即“Internet控制报文协议”),而ICMP协议是TCP/IP协议的一个子协议,工作在网际层。ICMP协议主要用于传输网络是否连通、主机是否可达以及路由是否可用等控制信息。Ping可以回显TTL生存...

  • 前言:俗话说的好,懒是第一生产力,懒是提高生产效率的必要条件。而现今windows是大部分人的第一生产工具,批处理+定时任务这对黄金搭档就是提升生产效率的第一工具。大家在生产过程中经常会遇到各种周期性的重复的工作,比如我现在每天都会更换最新的jar包并重启tomcat,linux服务器我们可以用shell+crontab,而windo...

  •   Linux 登陆服务器敲命令太多,某时候确实不便,所以就用shell写了一个  我的blog地址: http://www.cnblogs.com/caoguo   一.说明 支持秘密和密钥两种格式用户名和密码都是写文件的,明文保存二.配置 密码文件配置:序号:IP:端口:用户:密码:说明 1:192.168.88.128:22:...