자산을 제공하기 전에 Nginx에 몇 초 동안 기다리도록하려면 어떻게해야합니까? 스크립트에 지연을 추가하고

그래서 내가 쓰고있는 앱에서 Ajax와 같은 것을 로컬로 테스트 할 때 종종 sleep문장을 사용하여 서버 측 스크립트에 지연을 추가하고 싶습니다 . 느린 연결 등을 시뮬레이트하는 데 도움이됩니다.

Nginx 설정에서 제공하는 플랫 HTML 파일에서 작동하는 유사한 지연 동작을 직접 지정하는 방법이 있습니까?

나는 당신이 네트워크 레벨에서 비슷한 지연 시뮬레이션을 할 수 있다는 것을 알고 있습니다 ( here 참조 ).



답변


답변

추가하고 싶습니다 astlock의 답변을 원하는 경우 일반 회신하는 것을 return주의해야가 있다는 것을 다음 주 : 당신이 에이 사용 echo하지 표준 return후, 지시어를 echo_sleep이와 같은 지연에 응답하려면 :

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';
}

(openresty / 1.7.10.2에서 테스트)


답변

에코 모듈을 사용하는 방법에 대한 자세한 설명을 제공하십시오.

기본 설정에서 시작하는 경우 다음과 같이 정적 파일과 PHP 파일을로드합니다.

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

그런 다음 정적 및 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;
}

이것은 분명히 원하는대로 수정할 수 있습니다. 기본적으로 각 위치 블록을 명명 된 @location으로 이동하십시오. 그런 다음 원래 위치 블록에서 echo_sleepecho_exec을 사용 하십시오.


답변

백엔드 서버가 요청을 받도록 설정 한 다음 서버에서 응답을 지연시킬 수 있습니다. Nginx 프록시는 백엔드 서버에 요청을 프록시합니다.


답변

nginx의 응답을 지연시킬 방법이 없습니다 (IHMO). 이러한 기능을 사용하려면 웹 서버가 아닌 응용 프로그램을 재 작업해야합니다.