阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx安装Nginx-echo模块

246次阅读
没有评论

共计 2774 个字符,预计需要花费 7 分钟才能阅读完成。

Nginx-echo 可以在 Nginx 中用来输出一些信息,是在测试排错过程中一个比较好的工具。它也可以做到把来自不同链接地址的信息进行一个汇总输出。总之能用起来可以给开发人员带来挺大帮助的。下面看看我们如何去安装使用它。

1. 下载 Nginx-echo

cd /usr/local/nginx-1.12.2/
wget https://github.com/openresty/echo-nginx-module/archive/v0.60.tar.gz

2. 解压下载来的文件

tar zxvf v0.60.tar.gz

3. 查看一下之前安装的模块

/usr/local/nginx/sbin/nginx -V

4. 进入以前下载过来的 Nginx 安装包目录下配置

cd /usr/local/nginx-1.12.2/
./configure –add-module=/usr/local/nginx-1.12.2/echo-nginx-module-0.61 –add-module=/usr/local/nginx-1.12.2/ngx_image_thumb-master

5. 编译安装,如果是升级可以使用 make upgrade

make && make install

6. 使用 echo,以下内容为官方的案例,加了一些自己的理解

# 简单输出,看别人日志地址是 /hello,我这里测试后不知道为什么一直访问不到,所以加上 /
location /hello/ {
    echo “hello, world!”;
}

#$echo_timer_elapsed 计时,通过 echo_reset_timer 执行后开始计算
location /timed_hello/ {
    echo_reset_timer;
    echo hello world;
    echo “‘hello world’ takes about $echo_timer_elapsed sec.”;
    echo hiya igor;
    echo “‘hiya igor’ takes about $echo_timer_elapsed sec.”;
}

#echo_sleep 可以等待 2.5s 后再输出
location /echo_with_sleep/ {
    echo hello;
    echo_flush;  # ensure the client can see previous output immediately
    echo_sleep  2.5;  # in sec
    echo world;
}

# 在 proxy_pass 这个地址获得的源代码前后加上指定的内容
location /echo/ {
      echo_before_body hello;
      echo_before_body world;
      proxy_pass $scheme://127.0.0.1:$server_port$request_uri/more;
      echo_after_body hiya;
      echo_after_body igor;
}
 
#echo_location_async 可以异步去访问其他地址,不影响当前函数执行,$echo_timer_elapsed 最后输出的值为 0
location /main/ {
      echo_reset_timer;
 
      # subrequests in parallel
      echo_location_async /sub1/;
      echo_location_async /sub2/;
 
      echo “took $echo_timer_elapsed sec for total.”;
}
location /sub1/ {
      echo_sleep 2;
      echo hello;
}
location /sub2/ {
      echo_sleep 1;
      echo world;
}

# 同步执行
location /main/ {
      echo_reset_timer;
 
      # subrequests in series (chained by CPS)
      echo_location /sub1/;
      echo_location /sub2/;
 
      echo “took $echo_timer_elapsed sec for total.”;
}
location /sub1/ {
      echo_sleep 2;
      echo hello;
}
location /sub2/ {
      echo_sleep 1;
      echo world;
}

#echo_duplicate 3 “–” 意思是重复 3 次输出 ”–“
location /dup/ {
    echo_duplicate 3 “–“;
    echo_duplicate 1 ” END “;
    echo_duplicate 3 “–“;
    echo;
}

# 输出客户端请求的信息
location /echoback/ {
    echo_duplicate 1 $echo_client_request_headers;
    echo “\r”;
 
    echo_read_request_body;
    echo_request_body;
}

# 输出 querystring、method、body、content 等信息
location /multi {
    echo_subrequest_async POST ‘/sub’ -q ‘foo=Foo’ -b ‘hi’;
    echo_subrequest_async PUT ‘/sub’ -q ‘bar=Bar’ -b ‘hello’;
}
location /sub {
    echo “querystring: $query_string”;
    echo “method: $echo_request_method”;
    echo “body: $echo_request_body”;
    echo “content length: $http_content_length”;
    echo ‘///’;
}

# 可以将多个 JS 合并到一个 URL 地址输出
# GET /merge?/foo.js&/bar/blah.js&/yui/baz.js will merge the .js resources together
location /merge {
    default_type ‘text/javascript’;
    echo_foreach_split ‘&’ $query_string;
    echo “/* JS File $echo_it */”;
    echo_location_async $echo_it;
    echo;
    echo_end;
}

# 如果地址为 /if/?val=abcd,则输出 hit
# 参数名为 val,参数值以 a 开头
location /if/ {
    set $res miss;
    if ($arg_val ~* ‘^a’) {
        set $res hit;
        echo $res;
    }
    echo $res;
}

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2774字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中