Więc kiedy testuję lokalnie takie rzeczy, jak Ajax w aplikacjach, które piszę, często lubię dodawać opóźnienie w skryptach po stronie serwera za pomocą sleep
instrukcji. Pomaga symulować wolne połączenia itp.
Czy istnieje sposób, aby określić podobne zachowanie opóźnienia bezpośrednio w konfiguracji Nginx, które działałoby dla płaskich plików HTML, które obsługuje?
Wiem, że możesz przeprowadzić podobną symulację opóźnienia na poziomie sieci (patrz tutaj ), ale wydaje się dość niechlujna i nigdy nie działała dla mnie zbyt dobrze.
Odpowiedzi:
Powinieneś wypróbować moduł echa.
źródło
Chciałbym dodać do odpowiedzi astlock jest , że jeśli chcesz, aby odpowiedzieć za pomocą zwykłego
return
następnie zauważyć, że istnieje pewien wyjątek: ty masz do wykorzystaniaecho
, a nie standardowąreturn
dyrektywy poecho_sleep
reagować z opóźnieniem, podobnie jak to:(Testowany na openresty / 1.7.10.2)
źródło
Podając bardziej szczegółowe wyjaśnienie, w jaki sposób możesz użyć modułu echa:
Jeśli zaczynasz od podstawowej konfiguracji, która ładuje pliki statyczne i pliki PHP, z czymś takim:
Można to następnie przekonwertować na coś takiego, aby dodać opóźnienie zarówno do żądań statycznych, jak i PHP:
Można to oczywiście zmodyfikować w dowolny sposób. Zasadniczo przenieś każdy blok lokalizacji do nazwanej @lokalizacji. Następnie użyj
echo_sleep
iwecho_exec
oryginalnym bloku lokalizacji.źródło
możesz ustawić serwer zaplecza na otrzymywanie żądania, a następnie opóźnić odpowiedź na serwerze. Nginx proxy zapytanie do serwera zaplecza.
źródło
Nie ma sposobu (IHMO) na opóźnienie odpowiedzi od nginx. Aby włączyć taką funkcję, musisz przerobić aplikację, a nie serwer WWW.
źródło