2015-04-15 15 views
5

'a göre derecelendirme oranı Belki de kötü bir soru soruyorum, ancak IP tabanlı değil, özel http üstbilgisine dayalı olarak nginx'te hız sınırı uygulamak istiyorum. IP tabanlı yapılandırmam çalışıyor ancak özel http üstbilgisini kullanarak bu konuya giremiyorum. İstediğim şey, eğer http isteminde belirli bir başlık varsa, o zaman oran sınırlaması uygulanmamalıdır.Nginx'te http sınırlayıcısı

conf dosyası

 http { 
      limit_req_zone $http_userAndroidId zone=one:10m rate=1r/s; 

     location ^~ /mobileapp{ 
      set $no_cache 1; 
      # set rate limit by pulkit 
      limit_req zone=one burst=1; 
      limit_req_status 429; 
      error_page 429 /50x.html; 
     } 
} 

bir başlık mevcut olduğu, ancak, oran daha da uygulanır sınırlayıcı. P.S. userAndroidId benim istek başlığım.

cevap

3

Bunu harita ile yönetebileceğinizi düşünüyorum. Üstbilgi mevcutsa, bir değişkeni istemcinin IP'sine veya boş bir dizeye eşleyin ve bu değeri bölgenin anahtarı olarak kullanın. Harita eşleşmezse, boş dizge oran sınırlamasını engeller.

Böyle bir şey (test edilmedi, ancak çalışması gerekir)

map $http_userandroidid $limit { 
    default ""; 
    "~.+" $binary_remote_addr; 
} 

Bu kadar userAndroidId başlık eksik boş eşler "", $ ve binary_remote_addr başka herhangi bir değer. Daha sonra bölgenizdeki $ limit değişkenini şu şekilde kullanabilirsiniz:

limit_req_zone $limit zone=one:10m rate=1r/s; 
İlgili konular