Banning

Purging kolaydır: nesnenin hash değerini kullanır, yalnızca bir nesneyi tahliye eder ve basit bir kullanımı vardır.

Ancak, gerçekleştirecek çok sayıda temizleme işleminiz varsa veya hangi kaynakların bayat olduğundan emin değilseniz, tam URL kullanmak sizin için kısıtlayıcı olabilir. Bir örüntü bazlı geçersiz kılma mekanizması bu sorunu çözer ve ban fonksiyonuda bunu yapar.

Temel olarak, ban, önbellekten kaldırılması gereken nesneleri işaretlemek için regex kullanır. Bu işaretli nesneler sözde yasak listesine eklenir. ban, öğeleri hemen önbellekten kaldırmaz ve bu nedenle doğrudan hiçbir kaydı serbest bırakmaz.

Bir nesneye yasak listesine göre istek yapıldığında liste kontrol edilir. Ayrıca obj nesnesinin herhangi bir değişkeniyle eşleşen yasakları kontrol eden bir ban lurker isimli arka plan süreci da vardır.

obj nesnesi yalnızca header, yanıt gövdesi (response body) ve meta verileri (metadata) saklar. İstek (request) bilgisi yok. ban lurker bu bilgiden hiçbirine sahip değildir; bu nedenle ban lurker thread, yalnızca, ban, obj gibi istek bağlamı olmayan nesnelerle eşleşirse öğeleri önbellekten kaldırabilir. Diğer tüm ban'lar istek anında kaldırılır ve arka planda yapılmaz.

İşte temel bir ban örneği. PURGE örneğiyle tam olarak aynı şeyi yapar, ancak URL regex ile belirtilebilir:

acl ban {
  "localhost";
  "192.168.55.0"/24;
}
sub vcl_recv {
  if (req.method == "BAN") {
    if (!client.ip ~ ban) {
        return(synth(403, "Not allowed."));
    }
    ban("req.http.host == " + req.http.host + " && req.url ~ " + req.url);
    return(synth(200, "Ban added"));
  }
}

Sık erişilmeyen kaynaklar için req değişkenlerini temel alan çok sayıda ban biriktirdiğinizde Varnish, CPU performans sorunlarına neden olabilir. Önbellekteki tüm nesneler listeye göre denetlenene kadar yasaklar yasak listesinde tutulur. Yasaklanan nesneler yeni bir talep almazsa, listede kalırlar. Liste uzadıkça, listeyi her talepte kontrol etmek için daha fazla CPU zamanı gerekir.

Bu nedenle lurker-friendly yasakları kullanmanız tavsiye edilir.

Last updated