Echo#

O módulo adiciona echo, sleep, time, exec e outras funções no estilo shell.

Instalação#

Para instalar o módulo, use um dos seguintes pacotes:

  • Angie: angie-module-echo

  • Angie PRO: angie-pro-module-echo

Carregando o Módulo#

Para trabalhar com o módulo, ele deve ser carregado no contexto de main{}:

load_module modules/ngx_http_echo_module.so;

Exemplo de Configuração#

server {
    listen       80;
    server_name  localhost;

    location /echo {
        echo_before_body 'Estas linhas são inseridas';
        echo_before_body 'pela diretiva echo_before_body';
        echo_after_body 'Estas linhas são adicionadas';
        echo_after_body 'pela diretiva echo_after_body';
        proxy_pass $scheme://127.0.0.1:$server_port$request_uri/more;
    }

    location /echo/more {
        set $val 'valor';
        echo '======== Início da resposta do backend =========';
        echo 'Corpo da resposta do backend';
        echo "val está definido em $val";
        echo '======== Fim da resposta do backend ===========';
    }

    location /echo_with_sleep {
        echo olá;
        echo_flush;
        echo_sleep   2.5;
        echo mundo;
    }

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

    location /subr {
        echo_reset_timer;
        echo_location /sub1;
        echo_location /sub2;
        echo "levou $echo_timer_elapsed seg no total.";
    }

    location /subr_async {
        echo_reset_timer;
        echo_location_async /sub1;
        echo_location_async /sub2;
        echo "levou $echo_timer_elapsed seg no total.";
    }

    location /sub1 {
        echo_sleep 2;
        echo olá;
    }

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

Demonstração#

Vamos fazer algumas requisições para demonstrar a funcionalidade do módulo.

$ curl localhost/echo

  Estas linhas são inseridas
  pela diretiva echo_before_body
  ======== Início da resposta do backend =========
  Corpo da resposta do backend
  val está definido em valor
  ======== Fim da resposta do backend ==========
  Estas linhas são adicionadas
  pela diretiva echo_after_body
$ curl localhost/echo_with_sleep

  olá
  mundo

As strings "olá" e "mundo" aparecerão com um intervalo de 2,5 segundos.

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

  olá
  mundo
  levou 3.004 seg no total.

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

  olá
  mundo
  levou 0.000 seg no total.

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

Informações Adicionais#

Documentação detalhada e código fonte estão disponíveis em: openresty/echo-nginx-module.