Donc, lorsque je teste localement des choses comme Ajax dans les applications que j'écris, j'aime souvent ajouter un délai dans les scripts côté serveur à l'aide d'une sleep
instruction. Il permet de simuler des connexions lentes, etc.
Existe-t-il un moyen de spécifier un comportement de retard similaire directement dans la configuration Nginx qui fonctionnerait pour les fichiers HTML plats qu'il sert?
Je sais que vous pouvez faire une simulation de retard similaire au niveau du réseau (voir ici ) mais cela semble assez désordonné et n'a jamais très bien fonctionné pour moi.
Réponses:
Vous devriez essayer un module d'écho.
la source
Je voudrais ajouter à la réponse d' astlock que si vous voulez répondre simplement,
return
notez qu'il y a une mise en garde: vous devez utiliserecho
, pas unereturn
directive standard , aprèsecho_sleep
pour répondre avec un retard, comme ceci:(Testé sur openresty / 1.7.10.2)
la source
Donner une explication plus détaillée de la façon dont vous pourriez utiliser le module d'écho:
Si vous partez d'une configuration de base, qui charge des fichiers statiques et des fichiers PHP, avec quelque chose comme ceci:
Cela peut ensuite être converti en quelque chose comme ceci pour ajouter un délai aux requêtes statiques et PHP:
Cela peut évidemment être modifié pour tout ce que vous voulez. Fondamentalement, déplacez chaque bloc d'emplacement dans un @location nommé. Utilisez ensuite
echo_sleep
etecho_exec
dans le bloc d'emplacement d'origine.la source
vous pouvez définir un serveur principal pour recevoir la demande, puis retarder la réponse sur le serveur. Nginx proxy la demande au serveur principal.
la source
Il n'y a aucun moyen (IHMO) de retarder la réponse de nginx. Vous devez retravailler votre application et non votre serveur Web pour activer une telle fonctionnalité.
la source