Giriş
Günümüz internet dünyasında, web siteleri sürekli olarak arama motoru botları, veri kazıyıcılar (scrapers) ve kötü niyetli botlar tarafından taranmaktadır. Nginx'i bir ters vekil sunucusu (reverse proxy) olarak kullanırken, bu botların kaynak tüketimini kontrol altına almak, sunucu performansını korumak için kritik öneme sahiptir.
Sorun
Kontrolsüz bot trafiği, sunucu kaynaklarının (CPU, RAM, bant genişliği) tükenmesine ve gerçek kullanıcıların siteye erişiminin yavaşlamasına neden olabilir. Özellikle saldırgan botlar veya aşırı agresif tarayıcılar, sunucunuzu gereksiz yere meşgul edebilir.
Çözüm Adımları
Nginx üzerinde botları yönetmek için map direktifi ve limit_req modülünü kullanacağız. Bu yöntem, belirli User-Agent bilgilerini tanımlamamıza ve bu botlar için özel hız sınırlamaları uygulamamıza olanak tanır.
1. Adım: User-Agent Listesini Tanımlama
Öncelikle nginx.conf dosyanızın http bloğu içerisine, botları tespit eden bir haritalama ekleyin:
map $http_user_agent $is_bot {
default 0;
~*googlebot 1;
~*bingbot 1;
~*yandexbot 1;
~*python-requests 1;
}
2. Adım: Hız Sınırlaması Uygulama
Botlar için özel bir hız sınırı (rate limit) bölgesi oluşturun:
limit_req_zone $binary_remote_addr zone=bot_limit:10m rate=1r/s;
3. Adım: Sunucu Bloğunda Kısıtlamayı Etkinleştirme
İlgili server veya location bloğunda kısıtlamayı aktif edin:
location / {
if ($is_bot) {
limit_req zone=bot_limit burst=5 nodelay;
}
proxy_pass http://backend_server;
}
Uyarı: Çok agresif hız sınırlamaları, arama motoru botlarının sitenizi düzgün indekslemesini engelleyebilir. Bu ayarları yaparken Google Search Console üzerinden indeksleme hatalarını takip etmeniz önerilir.
Özet ve İpuçları
Bu yapılandırma ile botları tanımlayabilir ve onlara özel hız limitleri atayarak sunucunuzun performansını koruyabilirsiniz. Ayrıca, robots.txt dosyanızı güncel tutmak ve fail2ban gibi araçlarla entegre çalışmak, güvenliğinizi bir üst seviyeye taşıyacaktır.



