Fix lỗi 413 Request Entity Too Large trên Nginx

125

Bạn đang sử dụng dịch vụ Web Server Nginx trên hệ thống và khi bạn cần upload một vài file thông qua form upload của PHP chẳng hạn. Thì bạn đụng ngay cái lỗi nhìn chả thiện cảm tí nào mang tên ‘413 Request Entity Too Large‘. Bạn tự hỏi lỗi này là do Nginx hay do ứng dụng tải lên, mà cũng có thể do mạng mẽo đường truyền thì sao ? Xin thưa rằng, đó là do bạn cấu hình Nginx chưa phù hợp với hoạt động upload tài nguyên lên website thông qua trang web.

413 Request Entity Too Large

Nguyên nhân phát sinh lỗi “413 Request Entity Too Large”

Trong nội dung cấu hình Nginx, có một chỉ thị keyword cấu hình mang tên ‘client_max_body_size‘. ‘client_max_body_size‘ quy định kích thước tối đa của một gói tin truy vấn gửi dữ liệu lên web server Nginx từ client. Quay trở lại với trường hợp trên, khi bạn upload 1 file tài nguyên như file ảnh lên hệ thống. Lúc này từ trình duyệt sẽ gửi một gói tin truy vấn HTTP có phương thức POST và kích thước của body gói tin (có thể coi đại loại như kích thước tập tin) được Nginx kiểm tra. Nếu kích thước này lớn hơn giá trị ‘client_max_body_size‘, thì bạn sẽ ăn ngay cái lỗi “413 Request Entity Too Large” ngay trên trình duyệt web.

Cách khắc phục lỗi “413 Request Entity Too Large”

Bạn sẽ chỉnh sửa file cấu hình dịch vụ Nginx trên hệ thống.

hoặc đường dẫn nginx ở path khác, 2 đường dẫn mặc định khi compile source Nginx hoặc cài đặt qua repo.

Tiếp đến set giá trị ‘client_max_body_size‘ có thể ở 1 trong 3 block cấu hình Nginx gồm “global http“, “server” hay “location“. Nếu set ở block ‘global http‘, thì giá trị mới sẽ áp hết cho toàn bộ các Virtual Host đang config trên Nginx. Nếu set ở block ‘server‘, thì chỉ áp dụng cho virtual host tên miền cụ thể mà bạn mong muốn. Còn set ở block ‘location‘ , thì bạn có thể chỉ định URL dùng cho hoạt động upload thì sẽ có giá trị ‘client_max_body_size‘ cao hơn. Mình sẽ chọn giá trị ‘12 MB‘ vì nó lớn hơn ‘10 MB‘ ở ví dụ file ảnh phía trên.

+ Block “global http”

+ Block config ‘server’

+ Block config ‘location’

Giờ thì reload lại cấu hình Nginx mới thôi.

 
Lưu ý :
– Nếu bạn muốn Nginx không thực hiện việc kiểm tra này thì có thể thiết lập “client_max_body_size 0;”, lúc này client có thể gửi gói tin truy vấn POST lên Server với độ lớn dữ liệu không giới hạn. Điều này cực kì nguy hiểm và không khuyến khích thực hiện, nên bạn cần có 1 giá trị giới hạn phù hợp cho “client_max_body_size“.
– Thường Nginx sẽ là reverse proxy cho các dịch vụ backend dưới xử lý nội dung ngôn ngữ code như PHP thì có PHP-FPM hoặc dịch vụ Apache-PHP backend. Vì vậy bạn cũng cần tăng giới hạn PHP cho phép một gói tin có kích thước body phù hợp tài nguyên bạn tải lên web server. Ví dụ với PHP , ta sửa file ‘php.ini‘.

– Khởi động lại PHP-FPM.

– Khởi động lại Apache-PHP.

Đọc thêm bài: Tăng kích thước file được upload trên PHP

Như vậy bạn đã biết cách để tự xử lý lỗi “413 Request Entity Too Large” trên Nginx rồi. Chúc bạn thành công.

Đánh giá sao từ người đọc :
[ Tổng : 0 - Trung bình: 0 ]

LEAVE A REPLY