Nginx sunucularını kullanan web geliştiriciler sıklıkla nginx htaccess dosyasını arar, ancak bu dosya Apache web sunucularına özgüdür.
Nginx sunucularını kullanan web geliştiriciler sıklıkla nginx htaccess dosyasını arar, ancak bu dosya Apache web sunucularına özgüdür. Nginx, performans odaklı mimarisi nedeniyle .htaccess dosyalarını desteklemez ve bunun yerine ana konfigürasyon dosyalarında (genellikle nginx.conf veya site-specific conf dosyaları) doğrudan ayarlar yapmanızı gerektirir. Bu durum, özellikle Apache’ten geçiş yapanlar için kafa karıştırıcı olabilir. Bu makalede, Nginx’in .htaccess eşdeğerlerini nasıl uygulayacağınızı adım adım açıklayarak, sunucunuzu verimli hale getirmenizi sağlayacağız. Konfigürasyon değişikliklerini doğru yönetmek, sitenizin hızını artırır ve güvenlik açıklarını kapatır.
Nginx, Apache’nin aksine her istekte dinamik olarak .htaccess dosyalarını okumaz; bu, ekstra disk I/O’su yaratır ve performansı düşürür. Bunun yerine, statik konfigürasyon dosyaları kullanır ki bu da yüksek trafikli sitelerde büyük avantaj sağlar. Nginx htaccess dosyasını tanımaz çünkü tasarım felsefesi, sunucu yeniden başlatma veya reload ile konfigürasyonun yüklenmesini tercih eder. Bu yaklaşım, tutarlılık ve hız sunar.
Apache’te .htaccess ile yapılan rewrite kuralları, erişim kısıtlamaları veya önbellekleme gibi ayarlar, Nginx’te server veya location blokları içinde tanımlanır. Örneğin, bir .htaccess’te RewriteRule ile URL yönlendirmesi yapmak yerine, Nginx’te rewrite direktifi kullanılır. Bu geçişi kolaylaştırmak için, mevcut .htaccess içeriğinizi analiz edip eşdeğer Nginx kurallarına dönüştürmeniz gerekir. Sonuç olarak, sunucunuzu yeniden yapılandırdığınızda %20-30 daha hızlı yanıt süreleri elde edebilirsiniz, zira gereksiz dosya taramaları ortadan kalkar.
Nginx htaccess dosyasını kullanamıyorsanız, en yaygın eşdeğerleri location blokları ile uygularsınız. Nginx konfigürasyonunda, http, server veya location context’lerinde direktifler tanımlanır. Örneğin, Apache’teki mod_rewrite eşdeğeri Nginx’te rewrite ve return direktifleridir. Bu sayede, dinamik URL’leri statik hale getirebilir veya trafiği yönlendirebilirsiniz.
Apache’te RewriteEngine On ve RewriteRule ile yapılan yönlendirmeler, Nginx’te şu şekilde olur: location /eski/ { rewrite ^/eski/(.*)$ /yeni/$1 permanent; }. Bu kuralı /etc/nginx/sites-available/your-site.conf dosyasına ekleyin, ardından nginx -t ile test edip nginx -s reload ile uygulayın. Kalıcı yönlendirme (301) için permanent, geçici (302) için redirect kullanın. Bu yöntem, SEO dostu URL değişikliklerinde vazgeçilmezdir ve arama motorlarının doğru indekslemesini sağlar.
.htaccess’teki Require ip veya Deny from gibi kurallar, Nginx’te allow ve deny direktifleriyle eşleştirilir. Örnek: location /admin/ { allow 192.168.1.0/24; deny all; }. IP tabanlı erişimi kısıtlamak için CIDR notasyonu kullanın. Ayrıca, basic auth için auth_basic directive’i etkinleştirin: auth_basic “Kısıtlı Alan”; auth_basic_user_file /path/to/.htpasswd;. Htpasswd dosyasını Apache utils ile oluşturun. Bu ayarlar, yönetici panellerini korur ve brute-force saldırılarını önler, sunucu güvenliğini artırır.
Uygulamaya geçmeden önce, konfigürasyon dosyanızı yedekleyin: cp /etc/nginx/sites-available/default /backup/default.bak. Ardından, örnek bir site konfigürasyonu oluşturalım. Server bloğu içinde location / { try_files $uri $uri/ /index.php?$query_string; } ile WordPress benzeri siteleri destekleyin. .htaccess’teki expires header’ları için add_header Cache-Control “public, max-age=31536000”; kullanın. Performansı optimize etmek adına, gzip etkinleştirin: gzip on; gzip_types text/plain application/xml;.
Apache’teki mod_expires eşdeğeri, Nginx’te expires direktifiyle yapılır: location ~* \.(js|css|png|jpg)$ { expires 1y; add_header Cache-Control “public, immutable”; }. Bu, tarayıcı önbelleklemesini uzatarak sunucu yükünü azaltır. Statik dosyalar için ayrı location bloğu tanımlayın ve proxy_cache kullanın dinamik içerik için. Test etmek üzere curl -I http://yoursite.com/style.css ile header’ları kontrol edin; doğru ayarlanmışsa Cache-Control görünür. Bu optimizasyonlar, sayfa yüklenme süresini saniyeler kısaltır.
Değişiklikleri her zaman nginx -t ile doğrulayın; syntax hatası varsa düzeltin. Üretim ortamında, reload yerine restart düşünün eğer büyük değişiklikler varsa. Nginx’in modüler yapısı sayesinde, include direktifi ile modülleri ayırın, bakımı kolaylaştırın.
Sonuç olarak, nginx htaccess dosyasını bırakıp doğrudan konfigürasyon dosyalarına odaklanmak, sunucunuzu daha güvenli ve hızlı kılar. Bu rehberi takip ederek, Apache’ten sorunsuz geçiş yapabilir, pratik örneklerle kendi ayarlarınızı özelleştirebilirsiniz. Düzenli testler ve log incelemeleriyle (access_log ve error_log), sisteminizi mükemmelleştirin. Nginx’in gücü, doğru konfigürasyonda yatar; bu adımları uygulayarak farkı hemen göreceksiniz.