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

2024-03-18 15:08

本文主要是介绍在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


这篇关于在CentOS 6.9 x86_64的nginx 1.12.2上开启echo-nginx-module模块实录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/822733

相关文章

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

Nginx添加内置模块过程

《Nginx添加内置模块过程》文章指导如何检查并添加Nginx的with-http_gzip_static模块:确认该模块未默认安装后,需下载同版本源码重新编译,备份替换原有二进制文件,最后重启服务验... 目录1、查看Nginx已编辑的模块2、Nginx官网查看内置模块3、停止Nginx服务4、Nginx

python urllib模块使用操作方法

《pythonurllib模块使用操作方法》Python提供了多个库用于处理URL,常用的有urllib、requests和urlparse(Python3中为urllib.parse),下面是这些... 目录URL 处理库urllib 模块requests 库urlparse 和 urljoin编码和解码

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置