Echo#

该模块添加了 echosleeptimeexec 和其他 shell 风格的函数。

加载模块#

要使用该模块,必须在 main{} 的上下文中加载它:

load_module modules/ngx_http_echo_module.so;

配置示例#

server {
    listen       80;
    server_name  localhost;

    location /echo {
        echo_before_body '这些行被插入';
        echo_before_body '由 echo_before_body 指令插入';
        echo_after_body '这些行被添加';
        echo_after_body '由 echo_after_body 指令添加';
        proxy_pass $scheme://127.0.0.1:$server_port$request_uri/more;
    }

    location /echo/more {
        set $val 'value';
        echo '======== 开始后端响应 =========';
        echo '后端响应主体';
        echo "val 设置为 $val";
        echo '======== 结束后端响应 ===========';
    }

    location /echo_with_sleep {
        echo hello;
        echo_flush;
        echo_sleep   2.5;
        echo world;
    }

    location /dup {
        echo_duplicate 3 "--";
        echo_duplicate 1 " END ";
        echo_duplicate 3 "--";
        echo;
    }

    location /subr {
        echo_reset_timer;
        echo_location /sub1;
        echo_location /sub2;
        echo "总共花费 $echo_timer_elapsed 秒。";
    }

    location /subr_async {
        echo_reset_timer;
        echo_location_async /sub1;
        echo_location_async /sub2;
        echo "总共花费 $echo_timer_elapsed 秒。";
    }

    location /sub1 {
        echo_sleep 2;
        echo hello;
    }

    location /sub2 {
        echo_sleep 1;
        echo world;
    }
}

演示#

让我们发出几个请求来演示模块的功能。

$ curl localhost/echo

  这些行被插入
  由 echo_before_body 指令插入
  ======== 开始后端响应 =========
  后端响应主体
  val 设置为 value
  ======== 结束后端响应 ==========
  这些行被添加
  由 echo_after_body 指令添加
$ curl localhost/echo_with_sleep

  hello
  world

字符串 "hello" 和 "world" 将以 2.5 秒的间隔出现。

$ curl localhost/dup
------ END ------
$ time curl localhost/subr

  hello
  world
  总共花费 3.004 秒。

  real    0m3.027s
  user    0m0.015s
  sys     0m0.007s
$ time curl localhost/subr_async

  hello
  world
  总共花费 0.000 秒。

  real    0m2.023s
  user    0m0.001s
  sys     0m0.020s

附加信息#

详细文档和源代码可在以下地址获取: openresty/echo-nginx-module.