1. 403 Forbidden Hatası: İzin Sorunları
Birçok geliştirici, 403 Forbidden hatasıyla karşılaştığında, genellikle sunucunun izinleriyle ilgili bir problem olduğunu düşünür. Ancak bazen bu hata, Nginx konfigürasyonundaki küçük bir hata yüzünden meydana gelir. Nginx, bir dosyaya erişmeye çalışan istemciye "Erişim yasak" demek için 403 hata kodunu döndürür. Peki bunu nasıl çözersiniz?
server {
location / {
try_files $uri $uri/ =404;
}
}
Yukarıdaki yapı, doğru izinlerin verildiğinden emin olduktan sonra Nginx'in yalnızca geçerli dosyaların varlığını kontrol etmesini sağlar.
2. 502 Bad Gateway Hatası: Backend Sunucu Hatası
Eğer bir 502 Bad Gateway hatası alıyorsanız, bu genellikle Nginx’in, istemciden gelen talepleri iletmeye çalışırken backend sunucuya ulaşamadığı anlamına gelir. Bu durumun çeşitli sebepleri olabilir. Backend sunucu çalışıyor olsa bile, proxy_pass yapılandırmasındaki bir hata yüzünden Nginx bu hatayı döndürebilir.
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
Bu konfigürasyon, doğru şekilde backend sunucusuna yönlendirme yapacak ve 502 hatasını ortadan kaldıracaktır.
3. 504 Gateway Timeout Hatası: Zaman Aşımı Sorunu
Bir başka yaygın hata olan 504 Gateway Timeout, genellikle bir arka uç sunucusunun yanıt vermemesi nedeniyle ortaya çıkar. Bu, sunucunun doğru şekilde yapılandırılmadığını veya yanıt süresinin çok uzun olduğunu gösterebilir.
Yapmanız gereken ilk şey, timeout değerlerini düzenlemektir. Aşağıdaki kodu ekleyerek sunucunun bekleme süresini artırabilirsiniz:
http {
send_timeout 60s;
proxy_read_timeout 300s;
proxy_connect_timeout 300s;
}
Bu ayarlarla, Nginx daha uzun süre veri bekleyecek ve zaman aşımı hataları daha az olacak.
4. "File not Found" Hatası: Dosya Konumlandırma Sorunu
Bazen Nginx, talepleri doğru bir şekilde yönlendiremez ve 404 File not Found hatası verir. Ancak bunun ardında başka bir sorun olabilir: Dosyanın yanlış bir dizine yerleştirilmiş olması!
Dosyaların doğru dizine yerleştirildiğinden emin olduktan sonra, root direktifini doğru bir şekilde ayarlamanız gerekir:
server {
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
Bu yapı, Nginx'in doğru dizine yönlendirme yapmasına yardımcı olacaktır.
5. "Connection Refused" Hatası: Sunucuya Bağlantı Sorunu
Eğer Nginx, web sunucusuyla iletişim kuramıyorsa, bu Connection Refused hatasına yol açabilir. Bu genellikle backend sunucuya yapılan bağlantıların reddedilmesi nedeniyle meydana gelir.
Sunucunun düzgün çalışıp çalışmadığını kontrol edin. Ardından, Nginx'in doğru IP adresini ve portu kullandığından emin olun. Eğer backend sunucusu düzgün çalışıyorsa, yapılandırmalarınızı gözden geçirin.
6. "Too Many Requests" Hatası: Rate Limiting Sorunu
Çok fazla istek gönderildiğinde, 429 Too Many Requests hatası alabilirsiniz. Nginx, istemciden gelen çok fazla isteği sınırlamak için bir rate limiting politikası uygular.
Bu hatayı çözmek için, limit_req direktifini kullanarak sınırlamaları yeniden yapılandırabilirsiniz:
http {
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
server {
location / {
limit_req zone=mylimit burst=5;
}
}
}
Bu kod, her istemciye saniyede sadece bir istek hakkı tanıyacaktır.
7. "Bad Request" Hatası: Karakter Kodlaması Sorunu
Eğer 400 Bad Request hatası alıyorsanız, bu bazen istemciden gelen verilerin doğru şekilde kodlanmamasından kaynaklanabilir. Nginx, belirli karakter setlerini kabul etmezse bu hata döndürülebilir.
server {
charset utf-8;
}
Bu ayar, Nginx’in istemci verilerini doğru şekilde işlemesini sağlar.