<!-- review: finished -->

<a id="external-echo"></a>

# Echo

该模块添加了 `echo`、`sleep`、`time`、`exec` 以及其他 shell 风格的函数。

<a id="installation-8"></a>

## 安装

要 [安装](https://cn.angie.software//angie/docs/installation/index.md#install-packages) 该模块，请使用以下软件包之一：

- Angie：`angie-module-echo`
- Angie PRO：`angie-pro-module-echo`

<a id="loading-the-module-8"></a>

## 加载模块

要使用该模块，必须在 `main{}` 上下文中加载它：

```nginx
load_module modules/ngx_http_echo_module.so;
```

<a id="configuration-example-85"></a>

## 配置示例

```nginx
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 "took $echo_timer_elapsed sec for total.";
    }

    location /subr_async {
        echo_reset_timer;
        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;
    }
}
```

<a id="demonstration"></a>

## 演示

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

```console
$ curl localhost/echo

  这些行是由
  echo_before_body 指令插入的
  ======== 后端响应开始 =========
  后端响应主体
  val 被设置为 value
  ======== 后端响应结束 ===========
  这些行是由
  echo_after_body 指令添加的
```

```console
$ curl localhost/echo_with_sleep

  hello
  world
```

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

```console
$ curl localhost/dup
------ END ------
```

```console
$ time curl localhost/subr

  hello
  world
  took 3.004 sec for total.

  real    0m3.027s
  user    0m0.015s
  sys     0m0.007s
```

```console
$ time curl localhost/subr_async

  hello
  world
  took 0.000 sec for total.

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

<a id="additional-information-9"></a>

## 附加信息

详细文档和源代码可在以下位置获取：
[https://github.com/openresty/echo-nginx-module](https://github.com/openresty/echo-nginx-module).
