Nguyên nhân gây ra lỗi "Request body no files data length is larger" trên DirectAdmin
Lỗi này xuất hiện khi người dùng cố gắng upload file lớn qua DirectAdmin, nhưng máy chủ web (nginx hoặc Apache) đã giới hạn kích thước dữ liệu được phép gửi trong một yêu cầu HTTP. Cụ thể, lỗi thường do một hoặc nhiều nguyên nhân sau:
1. Giới hạn client_max_body_size trong nginx quá nhỏ → nginx từ chối request có dung lượng vượt quá mức cho phép.
2. Giới hạn post_max_size hoặc upload_max_filesize trong PHP thấp → PHP không xử lý được dữ liệu upload, gây lỗi từ phía DirectAdmin.
3. Giới hạn LimitRequestBody trong Apache (nếu dùng Apache) → Apache từ chối xử lý các request quá lớn.
4. Sử dụng reverse proxy nhưng chưa đồng bộ giới hạn giữa nginx và Apache/PHP → nginx cho phép, nhưng Apache hoặc PHP lại chặn lại, gây lỗi.
Cách xử lý lỗi: Request body no files data length is larger trên DirectAdmin
Cách 1: Tạm thời tắt ModSecurity
Một trong những nguyên nhân phổ biến gây ra lỗi này là do ModSecurity – một module tường lửa ứng dụng web – đang chặn các request lớn. Bạn có thể tắt tạm thời theo hướng dẫn sau:
- Bước 1: Vô hiệu hóa các rule trong ModSecurity
Truy cập DirectAdmin với quyền admin, vào phần Server Manager > ModSecurity. Tại đây, bạn có thể tắt toàn bộ các rule đang kích hoạt để ngăn ModSecurity can thiệp vào quá trình upload.
- Bước 2: Truy cập CustomBuild
Tại giao diện chính của DirectAdmin, chọn Extra Features > CustomBuild để mở công cụ cấu hình nâng cao.
- Bước 3: Tắt ModSecurity trong mục Options
Tại tab Options, tìm dòng modsecurity dưới phần WEB Server Settings. Chuyển trạng thái từ on sang off để vô hiệu hóa hoàn toàn ModSecurity.
- Bước 4: Khởi động lại dịch vụ webserver
Dùng SSH để truy cập máy chủ (với quyền root), sau đó khởi động lại webserver để các thay đổi có hiệu lực. Nếu bạn dùng Apache, có thể sử dụng lệnh sau: systemctl restart httpd hoặc service httpd restart
- Bước 5: Kiểm tra lại hoạt động
Sau khi khởi động lại, bạn nên kiểm tra lại website hoặc chức năng upload để đảm bảo lỗi đã được xử lý thành công.
Cách 2: Tùy chỉnh giới hạn ModSecurity
Thay vì tắt toàn bộ ModSecurity, bạn cũng có thể điều chỉnh lại giới hạn dữ liệu upload để ModSecurity cho phép các request lớn hơn:
- Bước 1: SSH vào máy chủ
Truy cập SSH đến VPS hoặc server chạy DirectAdmin với quyền root để thực hiện thao tác cấu hình.
- Bước 2: Mở file cấu hình ModSecurity
Sau khi kết nối SSH thành công, bạn cần chỉnh sửa tệp cấu hình của ModSecurity. Tệp này thường nằm tại đường dẫn /etc/httpd/conf/extra/httpd-modsecurity.conf.
Bạn có thể sử dụng bất kỳ trình soạn thảo văn bản nào trong môi trường dòng lệnh, ví dụ như nano hoặc vi. Lệnh sau sẽ mở tệp bằng nano: vi /etc/httpd/conf/extra/httpd-modsecurity.conf
Trong tệp cấu hình này, bạn hãy tìm dòng chứa giá trị 131072 hoặc dòng bắt đầu bằng SecRequestBodyNoFilesLimit. Sau đó, bạn thay đổi giá trị này thành một số lớn hơn theo nhu cầu.
Mình sẽ giữ nguyên dòng cũ bằng cách thêm dấu "#" ở đầu dòng để biến nó thành chú thích, và sau đó thêm một dòng mới tương tự với giá trị cao hơn gấp 1000 lần.
Bước 3: Khởi động lại Webserver
Sau khi chỉnh sửa xong tệp cấu hình của Apache hoặc PHP, bạn có thể khởi động lại webserver Apache bằng một trong hai lệnh sau: systemctl restart httpd hoặc service httpd restart
Sau khi khởi động lại, bạn nên kiểm tra xem webserver đã hoạt động trở lại bình thường khi đã hoàn tất sửa lỗi Request body no files data length is larger trên DirectAdmin chưa.
Khắc phục lỗi "Request body no files data length is larger" trên DirectAdmin giúp website hoạt động ổn định và tránh gián đoạn khi tải lên hoặc gửi dữ liệu.
Hy vọng hướng dẫn trên sẽ giúp bạn khắc phục lỗi một cách nhanh chóng! Nếu bạn gặp khó khăn trong bất kỳ bước nào, đừng ngần ngại yêu cầu thêm sự hỗ trợ.