<!-- review: finished -->

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

# Echo

El módulo añade funciones de estilo shell como `echo`, `sleep`, `time`, `exec` y otras.

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

## Instalación

Para [instalar](https://es.angie.software//angie/docs/installation/index.md#install-packages) el módulo, use uno de los
siguientes paquetes:

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

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

## Carga del Módulo

Para trabajar con el módulo, debe cargarse en el contexto `main{}`:

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

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

## Ejemplo de Configuración

```nginx
server {
    listen       80;
    server_name  localhost;

    location /echo {
        echo_before_body 'Estas líneas son insertadas';
        echo_before_body 'por la directiva echo_before_body';
        echo_after_body 'Estas líneas son añadidas';
        echo_after_body 'por la directiva echo_after_body';
        proxy_pass $scheme://127.0.0.1:$server_port$request_uri/more;
    }

    location /echo/more {
        set $val 'value';
        echo '======== Inicio respuesta backend =========';
        echo 'Cuerpo respuesta backend';
        echo "val está establecido en $val";
        echo '======== Fin respuesta backend ===========';
    }

    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>

## Demostración

Hagamos algunas peticiones para demostrar la funcionalidad del módulo.

```console
$ curl localhost/echo

  Estas líneas son insertadas
  por la directiva echo_before_body
  ======== Inicio respuesta backend =========
  Cuerpo respuesta backend
  val está establecido en value
  ======== Fin respuesta backend ===========
  Estas líneas son añadidas
  por la directiva echo_after_body
```

```console
$ curl localhost/echo_with_sleep

  hello
  world
```

Las cadenas "hello" y "world" aparecerán con un intervalo de 2,5 segundos.

```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>

## Información Adicional

La documentación detallada y el código fuente están disponibles en:
[https://github.com/openresty/echo-nginx-module](https://github.com/openresty/echo-nginx-module).
