Cách Fix Lỗi 413 Request Entity Too Large Error Trong NginX

NginX (phát âm endzin-eks) là web server được sử dụng phổ biến đứng thứ 2 sau Apache theo thống kê mới được đưa ra gần đây dựa trên kết quả của một server được thực hiện hồi tháng 6 năm 2017 bởi W3techs.
Thống kê mức độ sử dụng các phần mềm web server
Nguồn: W3techs
Trong bài viết này chúng ta sẽ tìm hiểu cách khắc phục một lỗi cũng khá phổ biến khi sử dụng NginX, khi gặp lỗi này chúng ta sẽ thấy server trả về thông báo như sau:
413 Request Entity Too Large Error

Nguyên Nhân

Lỗi này xảy ra khi client thực hiện việc tải dữ liệu lên server với kích thước dữ liệu lớn hơn kích thước cho phép bởi NginX.
Ví dụ khi NginX được cài đặt để giới hạn dung lượng tối đa cho phép của dữ liệu gửi lên server là 1M nhưng client lại upload một file với kích thước là 2M.

Cách Khắc Phục

Để khắc phục lỗi trên bạn cần cấu hình lại thông số client_max_body_size trong NginX. Thông số này quy định dung lượng tối đa cho phép client có thể sử dụng trong request body gửi tới NginX.
Mở tập tin cấu hình nginx.conf sử dụng text editor có trên hệ thống (bài viết này sử dụng Vim tuy nhiên thì bạn có thể dùng editor khác như Nano nếu muốn):
$ sudo vi /etc/nginx/nginx.conf
Hoặc:
$ sudo vi /usr/local/nginx/conf/nginx.conf
Tham khảo bài viết làm quen với VIM nếu bạn muốn tìm hiểu về text editor tuyệt vời này.
Tiếp theo thêm vào chỉ thị sau đây cho NginX:
client_max_body_size 2M;
Ở trên thiết lập dung lượng tối đa cho phép trong request body là 2M. Bạn có thể thay đổi giá trị này thành giá trị thực tế mà bạn muốn. Lưu thay đổi mới tạo ra ở trên rồi sau đó chạy câu lệnh sau đây để tải lại thiết lập cho NginX:
$ sudo service nginx reload
Nếu câu lệnh trên báo lỗi hoặc service không có trên phiên bản Linux bạn đang dùng thì bạn cần tham chiếu tới địa chỉ tập tin binary của NginX như sau:
$ sudo /usr/local/nginx/sbin/nginx -s reload
Hoặc:
$ sudo /sbin/nginx -s reload
Nếu bạn sử dụng PHP để phát triển ứng dụng thì bạn sẽ cần thiết lập thêm các thông số cần thiết để có thể qua được bước validation của PHP. Bạn nên theo dõi phần tiếp theo đây nếu bạn sử dụng PHP để xử lý form data gửi tới server.

Cấu Hình PHP

Mở file cấu hình PHP có tên là php.ini và thêm chỉ thị sau:
upload_max_filesize = 2M
Và:
post_max_size = 3M
Chỉ thị đầu tiên áp dụng cho form dùng để upload tập tin (binary file). Chỉ thị sau đó áp dụng cho các form gửi theo HTTP method là POST.
Lưu file cấu hình PHP ở trên sau đó khởi động lại NginX sử dụng câu lệnh đã được đề cập ở phần trước.

Nhận xét

Bài đăng phổ biến từ blog này

[Home Workout] Giảm cân & Body chuẩn chỉ cần tập luyện tại nhà

43 câu nói tiếng anh hay về tình yêu khiến trái tim thổn thức