Nginx ve Apache'de Bot Engelleme: Sunucu Yapılandırma Rehberi
Nginx ve Apache sunucularda bot engelleme yöntemlerini adım adım öğrenin. Yapılandırma örnekleri, user-agent filtreleme ve IP bazlı engelleme teknikleri.
Robots.txt dosyası botlara yalnızca bir öneri sunar; kötü niyetli veya kurallara uymayan botlar bu dosyayı görmezden gelebilir. Gerçek anlamda bot engelleme yapmak istiyorsanız, sunucu düzeyinde yapılandırma yapmanız gerekir. Bu rehberde Nginx ve Apache sunucularda bot engelleme yöntemlerini pratik örneklerle ele alıyoruz.
Nginx'te Bot Engelleme
Nginx'te bot engelleme işlemi genellikle server bloğu içinde yapılır. User-agent başlığını kontrol ederek belirli botları engelleyebilirsiniz. Nginx yapılandırma dosyanıza (genellikle /etc/nginx/nginx.conf veya /etc/nginx/sites-available/ altındaki dosya) şu bloğu ekleyebilirsiniz:
Öncelikle bir map bloğu tanımlayarak engellenecek botları belirleyin. Map bloğu http bağlamında tanımlanır ve $http_user_agent değişkenini kontrol eder. Eşleşen user-agent değerleri için bir değişken 1 olarak ayarlanır. Ardından server bloğu içinde bu değişkeni kontrol eden bir if bloğu ile 403 Forbidden yanıtı döndürebilirsiniz.
Bu yöntem performans açısından oldukça verimlidir çünkü Nginx map direktifi isteği uygulama katmanına iletmeden önce değerlendirir. Böylece istenmeyen botlar sunucu kaynaklarınızı tüketmeden engellenir.
IP adresi bazlı engelleme de Nginx'te oldukça kolaydır. Bilinen bot IP aralıklarını deny direktifi ile engelleyebilirsiniz. Birden fazla IP aralığı için ayrı bir dosya oluşturup include direktifi ile dahil etmeniz yapılandırmayı temiz tutar.
Apache'de Bot Engelleme
Apache sunucularda bot engelleme için mod_rewrite modülünü kullanabilirsiniz. .htaccess dosyanızda veya sanal host yapılandırmanızda RewriteEngine On direktifini etkinleştirdikten sonra RewriteCond ile user-agent kontrolü yapabilirsiniz.
RewriteCond %{HTTP_USER_AGENT} ile belirli bot isimlerini kontrol edebilir ve eşleşen istekleri RewriteRule ile 403 yanıtına yönlendirebilirsiniz. Birden fazla bot için OR bayrağı ile koşulları zincirleyebilirsiniz.
Apache'de alternatif olarak mod_authz_host veya mod_setenvif modüllerini de kullanabilirsiniz. SetEnvIfNoCase User-Agent direktifi ile ortam değişkenleri tanımlayarak Deny from env= kuralları oluşturabilirsiniz.
Rate Limiting ile Ek Koruma
Hem Nginx hem Apache'de rate limiting uygulayarak aşırı tarayan botları yavaşlatabilirsiniz. Nginx'te limit_req_zone direktifi ile istek sınırlama havuzları tanımlayabilirsiniz. Apache'de ise mod_ratelimit veya mod_evasive modüllerini kullanabilirsiniz.
Rate limiting özellikle yararlıdır çünkü user-agent'ını gizleyen botları da etkiler. Normal bir kullanıcı saniyede birkaç istek gönderirken, bir bot saniyede yüzlerce istek gönderebilir. Bu farkı tespit ederek otomatik engelleme uygulayabilirsiniz.
Önemli Noktalar
Sunucu düzeyinde bot engelleme yaparken dikkat etmeniz gereken birkaç nokta vardır. Birincisi, Googlebot ve Bingbot gibi arama motoru botlarını yanlışlıkla engellemeyin; bu SEO performansınızı ciddi şekilde olumsuz etkiler. İkincisi, engelleme kurallarınızı düzenli olarak güncelleyin çünkü yeni botlar sürekli ortaya çıkmaktadır. Üçüncüsü, yapılandırma değişikliklerinden önce mutlaka yedek alın ve değişiklikleri test ortamında deneyin. Son olarak, erişim loglarınızı düzenli olarak inceleyerek engelleme kurallarınızın doğru çalıştığından emin olun.