Nginx'e bir öğeyi sunmadan önce birkaç saniye beklemesini nasıl söyleyebilirim?


14

Bu yüzden yazdığım uygulamalarda Ajax gibi şeyleri yerel olarak test ederken, genellikle bir sleepdeyim kullanarak sunucu tarafı komut dosyalarına bir gecikme eklemek istiyorum . Yavaş bağlantıları vb. Taklit etmeye yardımcı olur.

Doğrudan Nginx yapılandırmasında sunduğu düz HTML dosyaları için çalışacak benzer bir gecikme davranışı belirtmenin bir yolu var mı?

Ağ düzeyinde benzer bir gecikme simülasyonu yapabileceğinizin farkındayım ( buraya bakın ) ama oldukça dağınık görünüyor ve benim için hiç iyi çalışmadı.


Nginx ile daha da karışık olacağını düşünmüyor musun?
DukeLion

Yanıtlar:



3

Ben eklemek istiyorum astlock cevabı isterseniz düz ile cevap vermek olduğu returnbir uyarı var ki o zaman not: Eğer zorunda kullanım echodeğil, bir standart returnsonra yönergeyi echo_sleepböyle bir gecikmeye sahip yanıt verdiklerini:

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'de test edilmiştir)


0

Echo modülünü nasıl kullanabileceğiniz hakkında daha ayrıntılı bir açıklama vermek:

Temel bir yapılandırmadan başlıyorsanız, statik dosyaları ve PHP dosyalarını aşağıdaki gibi bir şeyle yükler:

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

Bu, hem statik hem de PHP isteklerine gecikme eklemek için böyle bir şeye dönüştürülebilir:

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

Bu açıkça istediğiniz herhangi bir şey için değiştirilebilir. Temel olarak, her konum bloğunu adlandırılmış bir @location konumuna taşıyın. Ardından echo_sleepve echo_execorijinal konum bloğunda kullanın.


-1

isteği almak için bir arka uç sunucusu ayarlayabilir, ardından sunucuda yanıt vermeyi geciktirebilirsiniz. Nginx proxy'yi arka uç sunucusuna isteği.


-3

Nginx'ten yanıtı ertelemenin bir yolu yoktur (IHMO). Bu özelliği etkinleştirmek için web sunucunuzda değil uygulamanızda yeniden çalışmanız gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.