sunucuhataları
teknik çözüm merkezi
Ara Giriş Yap Üye Ol
🏠 Ana Sayfa 📚 Kurulum Rehberleri
Kategoriler
🌐 Web Sunucuları 🐧 İşletim Sistemleri 📦 Sanallaştırma & VPS 🖥️ Kontrol Panelleri 🔒 SSL & Güvenlik 📝 CMS & Uygulamalar 🗄️ Veritabanı 📧 Mail Sunucusu 🗨️ Forum ℹ️ Hakkımızda 📧 İletişim
Giriş Yap Üye Ol
Ana Sayfa Web Sunucuları Nginx Kurulumu Nginx 413 Request Entity Too Large Hatası Çözümü
🟢 Nginx Kurulumu

Nginx 413 Request Entity Too Large Hatası Çözümü

Nginx 413 hatası, yüklenen dosya boyutu sunucu limitini aştığında ortaya çıkar. client_max_body_size ayarı ile kolayca çözülür.

📅 15 Nisan 2025 👁 9 görüntülenme ⏱ 5 dk okuma
𝕏 Paylaş
📋 İçindekiler göster/gizle

Nginx 413 Request Entity Too Large Hatası Nedir?

Nginx web sunucusu kullanırken karşılaşılan 413 Request Entity Too Large hatası, istemcinin sunucuya gönderdiği isteğin (request) boyutunun Nginx'in izin verdiği maksimum boyutu aştığı durumlarda ortaya çıkar. Bu hata özellikle dosya yükleme (upload) işlemlerinde, büyük POST isteklerinde veya API çağrılarında karşılaşılan yaygın bir sorundur.

Hata mesajı tarayıcıda genellikle şu şekilde görünür:

413 Request Entity Too Large

Bu hatayı aldığınızda panik yapmaya gerek yok. Çözümü son derece basit olmakla birlikte, doğru yapılandırmayı yapmak önemlidir. Yanlış yapılandırma hem güvenlik açıklarına hem de performans sorunlarına yol açabilir.

Hatanın Nedenleri

1. client_max_body_size Limiti

Nginx'in varsayılan client_max_body_size değeri yalnızca 1 megabayttır (1MB). Kullanıcı 1MB'dan büyük bir dosya yüklemeye çalıştığında, Nginx isteği otomatik olarak reddeder ve 413 hatası döndürür. Modern web uygulamaları için bu limit oldukça düşüktür. Fotoğraf galerisi, belge yönetim sistemi veya e-ticaret sitesi gibi uygulamalarda kullanıcılar çok daha büyük dosyalar yüklemek isteyebilir.

2. PHP upload_max_filesize ile Uyumsuzluk

PHP tabanlı uygulamalarda (WordPress, Laravel, Joomla vb.) PHP'nin kendi upload limitleri de devreye girer. Nginx tarafında yeterince büyük bir limit tanımlamış olsanız bile PHP'nin upload_max_filesize ve post_max_size değerleri düşükse yükleme yine başarısız olur. Bu nedenle her iki katmanı birlikte yapılandırmak gerekir.

3. Reverse Proxy Yapılandırması

Nginx'i bir reverse proxy olarak kullandığınızda (örneğin arkasında Apache veya Node.js çalıştırıyorsanız), hem Nginx'in hem de arka uç sunucunun limit ayarlarını güncellemeniz gerekebilir.

Nginx Yapılandırmasında Çözüm

Temel Yapılandırma

Nginx yapılandırma dosyası genellikle /etc/nginx/nginx.conf veya site özelinde /etc/nginx/sites-available/sitename.conf konumunda bulunur.

sudo nano /etc/nginx/nginx.conf

http bloğu içine şu satırı ekleyin:

http {
    client_max_body_size 100M;
    # ... diğer ayarlar
}

Sadece belirli bir site için uygulamak isterseniz, server bloğu içine ekleyin:

server {
    listen 80;
    server_name example.com;
    client_max_body_size 100M;
    # ... diğer ayarlar
}

Yalnızca belirli bir konum (location) için uygulamak isterseniz:

location /upload {
    client_max_body_size 500M;
    # ... diğer ayarlar
}

Yapılandırmayı Test Etme ve Yeniden Yükleme

# Nginx yapılandırmasını test et
sudo nginx -t

# Hata yoksa Nginx'i yeniden yükle
sudo systemctl reload nginx

PHP Tarafında Çözüm

PHP için php.ini dosyasını düzenlemeniz gerekir. PHP sürümünüze göre bu dosyanın konumu değişir:

# PHP 8.2 için
sudo nano /etc/php/8.2/fpm/php.ini

# PHP 8.1 için
sudo nano /etc/php/8.1/fpm/php.ini

Aşağıdaki satırları bulup güncelliyoruz:

upload_max_filesize = 100M
post_max_size = 110M
memory_limit = 256M
max_execution_time = 300
max_input_time = 300

Önemli Not: post_max_size değeri her zaman upload_max_filesize değerinden biraz büyük olmalıdır. Çünkü POST isteği yalnızca dosyadan ibaret değildir; form verileri ve diğer alanlar da bu boyuta dahildir.

PHP-FPM servisini yeniden başlatın:

sudo systemctl restart php8.2-fpm

WordPress İçin Özel Çözüm

WordPress kullanıyorsanız, ek olarak wp-config.php dosyasında da ayar yapabilirsiniz:

define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');

Alternatif olarak, WordPress kök dizinindeki .htaccess dosyasına (Apache kullanıyorsanız) veya Nginx yapılandırmanıza aşağıdaki direktifleri ekleyebilirsiniz:

fastcgi_param PHP_VALUE "upload_max_filesize=100M \n post_max_size=110M";

Nginx Zaman Aşımı Ayarları

Büyük dosya yüklemelerinde zaman aşımı sorunları da yaşanabilir. Nginx yapılandırmanıza şu ayarları eklemek sorunu önler:

server {
    client_max_body_size 100M;
    client_body_timeout 300s;
    proxy_read_timeout 300s;
    proxy_connect_timeout 300s;
    proxy_send_timeout 300s;
}

Cloudflare Kullananlar İçin

Siteniz Cloudflare arkasındaysa, Cloudflare'nin de kendi istek boyutu limiti vardır. Ücretsiz planda maksimum 100MB istek boyutuna izin verilir. Enterprise planında bu limit artırılabilir. Cloudflare panelinizde Settings → Network → Maximum Upload Size bölümünden kontrol edebilirsiniz.

Önleyici Tedbirler

Doğru Limit Belirleme

Limit belirlerken aşırıya kaçmamak önemlidir. Örneğin bir blog sitesi için 10MB yeterli olabilirken, video paylaşım platformu için 2GB gerekebilir. Gereksiz yüksek limit belirlemek sunucunuzu DoS (Hizmet Reddi) saldırılarına karşı savunmasız bırakabilir.

Güvenlik Önlemleri

Yalnızca boyut limitini artırmak yetmez; yüklenen dosya türlerini de kontrol etmelisiniz. Nginx ile yalnızca belirli dosya uzantılarına izin verebilirsiniz:

location /upload {
    client_max_body_size 50M;
    # Sadece belirli dosya türlerine izin ver
    if ($request_filename !~* \.(jpg|jpeg|png|gif|pdf|docx)$) {
        return 403;
    }
}

Sık Sorulan Sorular

client_max_body_size 0 yaparsam ne olur?

Sıfır (0) değeri limitsiz anlamına gelir. Bu durum güvenlik açısından risklidir ve üretim ortamlarında kullanılmaması önerilir.

Hata hâlâ devam ediyorsa ne yapmalıyım?

Nginx'i yeniden başlatmayı (reload değil restart) deneyin, PHP-FPM'i yeniden başlatın ve Nginx log dosyalarını inceleyin:

sudo tail -f /var/log/nginx/error.log

Hangi değer ne kadar yüklemeye karşılık gelir?

1M = 1 Megabyte, 100M = 100 Megabyte, 1G = 1 Gigabyte şeklinde kullanılır.

Özet

Nginx 413 hatası, doğru yapılandırmayla dakikalar içinde çözülebilir. Temel adımlar şunlardır: Nginx'te client_max_body_size değerini artırın, PHP'de upload_max_filesize ve post_max_size değerlerini güncelleyin, ardından her iki servisi yeniden başlatın. Limit belirlerken güvenliği göz önünde bulundurarak uygulamanızın gerçek ihtiyacına uygun bir değer seçin.

🤔 Bu kurulumda sorun mu yaşıyorsunuz?

Hata mesajınızı kopyalayıp foruma konu açın. Topluluğumuz size özel durumunuza göre yardımcı olacaktır.

🗨️ Foruma Katıl & Yardım Al

Yorumlar

Henüz yorum yok. İlk yorumu siz yapın!

Yorum Yap

Yorumunuz onaylandıktan sonra yayınlanır.