إذا كنت تستخدم Nginx على خادم الويب الخاص بك، فقد تواجه خطأ 413 Request Entity Too Large عند محاولة تحميل ملفات كبيرة. يظهر هذا الخطأ عادةً عندما تتجاوز الحد الافتراضي لـ Nginx client_max_body_size وهو 1 MB. على سبيل المثال، من المحتمل رؤية هذا الخطأ عند محاولة تحميل ملف PDF بحجم 10 MB أو فيديو بحجم 50 MB. لحسن الحظ، الحل بسيط جداً: فقط قم بتكوين الإعداد المناسب.
فهم مصدر الخطأ
يتحقق Nginx من حجم جسم الطلبات من العميل. إذا تجاوز هذا الحجم قيمة client_max_body_size، فإنه يعيد خطأ 413 مباشرة. يمكن تعريف هذا الإعداد في ملف التكوين الرئيسي nginx.conf، أو داخل كتلة server معينة، أو داخل كتلة location. اعتماداً على المستوى الذي تم تعريفه فيه، ستحتاج إلى تغيير الإعداد.
تغيير إعداد client_max_body_size
الخطوة الأولى هي فتح ملف تكوين Nginx. عادةً ما يكون موجوداً في /etc/nginx/nginx.conf أو /etc/nginx/sites-available/default. بعد فتح الملف بمحرر نصوص، ابحث عن سطر مثل:
client_max_body_size 1M;إذا لم يكن هذا السطر موجوداً، فستحتاج إلى إضافته. على سبيل المثال، للسماح بتحميل ملفات بحجم يصل إلى 100 MB، قم بتعديل السطر ليصبح:
client_max_body_size 100M;الإعداد داخل كتلة Server
إذا كنت تريد تغيير الإعداد لموقع معين فقط، أضف نفس السطر داخل كتلة server المعنية. على سبيل المثال:
server { listen 80; server_name hosting.example.com; client_max_body_size 100M; ... }الإعداد داخل كتلة Location
لمزيد من التحديد، يمكنك تعيين حدود منفصلة لمسار URL معين. على سبيل المثال، للسماح بـ 200 MB لدليل /uploads:
location /uploads { client_max_body_size 200M; }اختبار Nginx وإعادة تشغيله
بعد إجراء التغييرات في ملف التكوين، تحقق من عدم وجود أخطاء في الصياغة:
sudo nginx -tإذا كان الاختبار ناجحاً، أعد تشغيل Nginx:
sudo systemctl restart nginxيمكنك الآن محاولة تحميل الملفات مرة أخرى.
التوافق مع PHP-FPM
إذا كنت تدير تطبيقاً يستخدم PHP، فتذكر أن PHP لديه حدوده الخاصة للتحميل. تحقق من إعدادات upload_max_filesize و post_max_size في ملف php.ini. من الأفضل عادةً تعيين نفس القيم. على سبيل المثال:
upload_max_filesize = 100M post_max_size = 100Mلا تنس إعادة تشغيل PHP-FPM بعد التغييرات.
الفحوصات النهائية والنصائح
في بعض الحالات، إذا كنت تستخدم وكيل عكسي أو CDN، فقد يكون لديهم حدود مماثلة. أيضاً، قد يكون من المفيد زيادة إعداد client_body_buffer_size للأداء. لكن تذكر أن القيم العالية جداً قد تثقل موارد الخادم. عادةً ما تكون القيم بين 10 MB و 100 MB كافية. بعد تطبيق هذه الإعدادات، يجب ألا ترى خطأ 413 مرة أخرى.