Como eu digo ao Nginx para esperar alguns segundos antes de servir um ativo?

12

Então, quando estou testando localmente coisas como Ajax em aplicativos que estou escrevendo, muitas vezes gosto de adicionar um atraso em scripts do lado do servidor usando uma instrução sleep . Isso ajuda a simular conexões lentas, etc.

Existe uma maneira de especificar um comportamento de atraso similar diretamente na configuração do Nginx que funcionaria para os arquivos HTML simples que está sendo veiculado?

Estou ciente de que você pode fazer uma simulação de atraso semelhante no nível da rede (consulte aqui ) mas parece bastante confuso e nunca funcionou muito bem para mim.

    
por BaronVonKaneHoffen 07.09.2013 / 13:17

5 respostas

17

Você deve tentar um módulo de eco.

por 07.09.2013 / 23:14
2

Gostaria de adicionar à resposta do astlock que, se você quiser responder com um return simples, observe que há uma ressalva: você precisa usar echo , não uma diretiva return padrão, depois de echo_sleep responder com um atraso, como este:

location = /slow-reply {
  echo_sleep 5.0;
  #return 200 'this response would NOT be delayed!';      
  echo 'this text will come in response body with HTTP 200 after 5 seconds';
}

(testado em openresty / 1.7.10.2)

    
por 04.09.2015 / 13:12
0

Fornecendo uma explicação mais detalhada de como você pode usar o módulo echo:

Se você está começando a partir de uma configuração básica, isso carrega arquivos estáticos e arquivos PHP, com algo parecido com isto:

location ~ \.php$ {
    include fastcgi.conf;
    fastcgi_pass php;
}

Isso pode ser convertido em algo como isto para adicionar um atraso a solicitações estáticas e PHP:

# Static files
location / {
    echo_sleep 5;
    echo_exec @default;
}
location @default {}

// PHP files
location ~ \.php$ {
    echo_sleep 5;
    echo_exec @php;
}
location @php {
    include fastcgi.conf;
    fastcgi_pass php;
}

Isso pode obviamente ser modificado para o que você quiser. Basicamente, mova cada bloco de localização para um @location nomeado. Em seguida, use echo_sleep e echo_exec no bloco de localização original.

    
por 20.09.2018 / 18:28
-1

você pode definir um servidor back-end para receber a solicitação e, em seguida, atrasar a resposta no servidor. Nginx proxy o pedido para o servidor backend.

    
por 24.11.2016 / 09:18
-3

Não há como (IHMO) atrasar a resposta do nginx. Você precisa refazer seu aplicativo e não seu servidor da Web para ativar esse recurso.

    
por 07.09.2013 / 13:41

Tags