Memahami client_max_body_size di Nginx: Cara Mengatasi Error “413 Request Entity Too Large”

Saat membangun aplikasi web, terutama yang melibatkan unggahan file seperti gambar, dokumen, atau video, Anda mungkin pernah menemui error:

413 Request Entity Too Large

Masalah ini sering terjadi pada server yang menggunakan Nginx sebagai reverse proxy atau web server. Penyebabnya? Ukuran file yang diunggah melebihi batas maksimum yang diizinkan oleh Nginx.

🧠 Apa Itu client_max_body_size?

client_max_body_size adalah direktif di konfigurasi Nginx yang menentukan batas maksimal ukuran request body yang bisa diterima oleh server dari client, termasuk file upload dan data POST.

Jika ukuran request melebihi batas ini, Nginx langsung menolak permintaan dan mengembalikan error 413 Request Entity Too Large.

⚙️ Berapa Batas Default-nya?

Secara default, jika client_max_body_size tidak diatur, maka batas maksimalnya adalah:

1 Megabyte (1MB)

Ini cukup untuk formulir-formulir kecil, tetapi tidak cukup untuk upload file.

🛠️ Cara Mengatur client_max_body_size

Anda bisa menambahkan konfigurasi ini di tiga tempat:

  • http: berlaku global untuk semua server
  • server: berlaku untuk satu domain / virtual host
  • location: berlaku spesifik untuk satu route (misalnya /upload)

Contoh di dalam blok server:

server {
    listen 80;
    server_name contoh.com;

    client_max_body_size 50M;

    location / {
        proxy_pass http://localhost:3000;
    }
}

📌 Tips Penggunaan

  • Jika Anda mengizinkan upload file berukuran besar, atur client_max_body_size sesuai kebutuhan (contoh: 100M, 500M, atau 1G).
  • Pastikan backend Anda (seperti PHP, Node.js, dll) juga mengizinkan ukuran yang sama atau lebih besar.
  • Setelah mengubah konfigurasi, reload Nginx: sudo nginx -t sudo systemctl reload nginx

✅ Kesimpulan

Error “413 Request Entity Too Large” sering terjadi karena batas default client_max_body_size yang hanya 1MB. Dengan menyesuaikan nilai ini, Anda bisa memastikan pengguna dapat mengunggah file sesuai kebutuhan aplikasi Anda.

✨ Bonus: Contoh Penggunaan untuk Upload API

location /api/upload {
    client_max_body_size 100M;
    proxy_pass http://localhost:5000;
}

Jika Anda menggunakan Nginx untuk reverse proxy aplikasi seperti Laravel, Django, atau Express, konfigurasi ini wajib Anda perhatikan. Semoga artikel ini membantu Anda menghindari error dan membuat pengalaman pengguna lebih baik!

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *