Khi sử dụng WordPress trên máy chủ Nginx + PHP-FPM, bạn có thể gặp lỗi khi upload ảnh lớn (ví dụ 900x800 trở lên). Một số lỗi phổ biến:
413 Request Entity Too Large
upstream sent too big header while reading response header from upstream
/wp-admin/async-upload.php
Lỗi này xảy ra khi cấu hình Nginx hoặc PHP không đủ bộ nhớ/buffer để xử lý các request lớn. Cụ thể:
client_max_body_size
trong Nginx quá nhỏ → chặn file uploadfastcgi_buffer_size
, fastcgi_buffers
quá thấp → không đủ bộ đệm để xử lý phản hồi từ PHP-FPMlarge_client_header_buffers
quá nhỏ → lỗi với các header lớnMở file cấu hình chính của Nginx, thường là:
/etc/nginx/nginx.conf
Thêm đoạn sau vào cuối block http {}
(nhưng vẫn nằm trong {}
):
http {
# ... các cấu hình khác phía trên
# === Cấu hình hỗ trợ upload và buffer response lớn ===
client_max_body_size 64M; # Giới hạn tối đa request body (nên khớp với post_max_size của PHP)
client_body_buffer_size 512k; # Buffer lưu trữ body trước khi ghi ra file tạm
# Cấu hình buffer cho header từ client lớn (tránh lỗi "request header too large")
large_client_header_buffers 4 32k;
# Cấu hình FastCGI để xử lý phản hồi PHP lớn
fastcgi_buffer_size 128k;
fastcgi_buffers 8 128k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_read_timeout 300;
# === Kết thúc cấu hình bổ sung ===
}
Sau đó kiểm tra và reload Nginx:
sudo nginx -t && sudo systemctl reload nginx
ini_set()
trong PHP nếu cấu hình PHP (upload_max_filesize
, post_max_size
,...) đã phù hợp.http
block)./var/log/nginx/error.log