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

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

  1. 在CentOS 6.9 x86_64的nginx 1.12.2上开启标准模块ngx_http_map_module实录

    介绍 默认情况下,nginx会加载标准模块ngx_http_map_module(或称ngx_map),除非人为的在configure时添加--without-http_map_module选项. n ...

  2. 在CentOS 6.9 x86_64的nginx 1.12.2上开启ngx_http_empty_gif_module模块实录

    ngx_http_empty_gif_module是nginx自带的标准模块,它只返回一个保存在内存中的透明像素的GIF图片(速度当然比硬盘上读取的速度快很多),多用于传递统计参数,用在locatio ...

  3. 在CentOS 6.9 x86_64的nginx 1.12.2上开启标准模块ngx_http_auth_request_module实录

    ngx_http_auth_request_module是是nginx的一个验证模块,它允许您的nginx通过发送请求到后端服务器(一般是应用服务器,例如tomcat,或者php等)进行请求, 并且根 ...

  4. 在CentOS 6.9 x86_64的nginx 1.12.2上开启ngx_http_geo_module模块实录

    ngx_http_geo_module模块,默认情况下,nginx会加载,除非人为的 --without-http_geo_module. 这个模块提供了一个非常好用的geo指令,可以用它来创建变量, ...

  5. 在CentOS 6.9 x86_64的nginx 1.12.2上开启ngx_req_status模块实录

    ngx_req_status是一个第三方模块,它用来展示nginx请求状态信息,类似于apache的status,ats的stats_over_http和channel_stats,nginx自带的模 ...

  6. 在CentOS 6.8 x86_64的nginx 1.10.3上开启http2功能

    在原有基础上修改编译选项来开启http2 回见 http://blog.csdn.net/tao_627/article/details/60957521 在nginx源码目录下的configure选 ...

  7. 在CentOS 6.9 x86_64的nginx 1.12.2上安装第三方模块set-misc-nginx-module实录

    set-misc-nginx-module模块是标准的HttpRewriteModule指令的扩展,提供更多的功能,如URI转义与非转义.JSON引述.Hexadecimal/MD5/SHA1/Bas ...

  8. 在CentOS 6.9 x86_64上开启nginx 1.12.2的proxy_cache缓存配置

    本文研究nginx提供的缓存功能,下面是实操记录. 这篇博文基于前面文章的基础上搭建,至始至终都是root用户操作 http://blog.csdn.net/tao_627/article/detai ...

  9. 在CentOS 6.9 x86_64上开启nginx 1.12.2的stub_status模块(ngx_http_stub_status_module)监控

    Nginx中的stub_status模块主要用于查看Nginx的一些状态信息.  本模块默认是不会编译进Nginx的,如果你要使用该模块,则要在编译安装Nginx时指定: ./configure -- ...

最新文章

  1. 实现ASP.NET MVC3 HtmlHelper 的 RadioButtonList 与CheckBoxList 扩展
  2. 计算机类学生发专利,关于统计2020年老师指导本科生发表科研论文数和申请专利数的通知...
  3. android:contentDescription
  4. BZOJ-1901 Zju2112 Dynamic Rankings 函数式线段树 套 树状数组+离线处理
  5. 领域驱动设计 (DDD)实例分析
  6. 函数计算如何粘合云服务,提供端到端解决方案
  7. android音视频【十】音频mp3剪切
  8. 类的加载过程详解之过程三:Initialization(初始化)阶段
  9. 真正的英雄(罗纳德·里根在“挑战者号”航天飞机失事后的演讲词)
  10. PS快速去除文字水印图片文字水印去除LOGO
  11. 徐思201771010132《面向对象程序设计(java)》第一周学习总结
  12. 关于MOSFET驱动电阻的选择
  13. iOS中百度地图API的总结
  14. 桌面图标计算机图标被禁用,电脑桌面图标常见问题
  15. 使用OpenCV和C++实现的分水岭算法(Watershed)
  16. 我所关注,推荐的公众号---软件那些事儿
  17. 爬虫实战4:豆瓣的模拟登陆
  18. 社交/SNS社交网络服务-ISP
  19. ScrollView中嵌套原生控件+WebView+原生控件出现的WebView滑动顶部的冲突问题。
  20. 机器学习(十二):人工神经网络(ANN)

热门文章

  1. ActiveMQ—消息特性(延迟和定时消息投递)
  2. Numpy 统计变量(平均值、标准差、方差、最大、最小、和、乘积、对角线和)
  3. 安卓Design包之AppBar和Toolbar的联用
  4. codeforces #310 div1 C
  5. (转)金额转中文大写
  6. 计算机启动和操作系统加载小话
  7. [C++对象模型][6]sizeof与对象内存布局
  8. 从今天开始收集一些经典的算法。
  9. java nio设计模式_Java NIO:浅析I/O模型
  10. chrome 窗体高度_Chrome窗口大小自定义调节插件下载_Chrome窗口大小自定义调节插件官方下载-太平洋下载中心...