413 Đối tượng yêu cầu quá lớn - Sự cố tải lên tệp


97

Tôi đang cố gắng tải lên tệp 30MB trên máy chủ của mình và nó không hoạt động.

  1. Khi tôi tải lên tệp 30MB, trang sẽ tải " Không tìm thấy trang "

  2. Khi tôi tải lên tệp 3MB, tôi nhận được "Đối tượng yêu cầu 413 quá lớn " với nginx / 0.6.32

Tôi đang cố gắng tìm nginx để có thể tăng " client_max_body_size " nhưng tôi không thể tìm thấy nginx được cài đặt trên máy chủ của mình. Tôi thậm chí đã thử chạy:

vi /etc/nginx/nginx.conf

hoặc là

vi /usr/local/nginx/conf/nginx.conf

để kiểm tra xem tệp cấu hình có tồn tại hay không, nhưng tôi không thể tìm thấy tệp đó trên máy chủ của mình.

Có cách nào để giải quyết vấn đề này không? Hay tôi phải cài đặt nginx trên máy chủ của mình.

BIÊN TẬP:

Tôi đã thực hiện tất cả các thay đổi cần thiết trong tệp php.ini của mình,

post_max_size 128M
upload_max_filesize 100M
memory_limit 256M

Cảm ơn, Raju



Xin chào Mohammad, tôi đã tìm kiếm nginx nhưng không thể tìm thấy nó trên máy chủ của mình. Tôi chắc chắn, nginx isnt được cài đặt trên máy chủ của tôi, vì vậy tôi đang bối rối về việc tại sao tôi nhận được một thông báo lỗi đó thuộc về Nginx
Raju Vishwas

đầu tiên bạn mustbe chắc chắn ngix không được cài đặt trên máy chủ của bạn, nhưng nếu bạn hoàn toàn chắc chắn, có lẽ vì lý do an ninh một số nhà quản lý máy chủ của mình cho tin tặc nhầm lẫn sử dụng thủ thuật này
Ashouri

bạn đã thử một ps aux | grep nginxđể xem nếu nó đang chạy?
rpkamp

Bạn đã thử which nginxchưa? Điều đó sẽ cung cấp cho bạn vị trí của tệp thực thi, không phải tệp cấu hình, nhưng ít nhất nó phải xác nhận xem nginx đã được cài đặt hay chưa.
Doug McLean

Câu trả lời:


119

Nguồn: http://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/

Chỉnh sửa tệp conf của nginx:

nano /etc/nginx/nginx.conf

Thêm một dòng trong phần http:

http {
    client_max_body_size 100M;
}

Không sử dụng MB nó sẽ không hoạt động, chỉ có M!

Cũng đừng quên khởi động lại nginx

systemctl restart nginx

Khi tôi làm điều này, 413 của tôi biến thành 404. Tôi đang sử dụng Amazon Linux trên EC2. Ngoài ra, doc nginx hiển thị chữ 'm' viết thường. nginx.org/en/docs/http/…
nu everest

Nó yêu cầu mật khẩu để thay đổi tệp. Nhưng tôi không nhớ thiết lập một. Tui bỏ lỡ điều gì vậy?
Sooraj

1
Đường dẫn cho nano phải là nano /etc/nginx/nginx.conf.
MaXi32

Làm việc cho tôi nhưng LƯU Ý: Nếu cấu hình của bạn đã có một http { }phần, hãy thêm phần còn lại vào bên trong nó! Việc thêm http {}phần mới sẽ không thành công và xuất hiện "http" directive is duplicatelỗi trong nhật ký Nginx.
jerclarke

42

-in php.ini (bên trong /etc/php.ini)

 max_input_time = 24000
 max_execution_time = 24000
 upload_max_filesize = 12000M
 post_max_size = 24000M
 memory_limit = 12000M

-in nginx.conf (trong / opt / nginx / conf)

client_max_body_size 24000M

Nó hoạt động cho trường hợp của tôi


Hi Arun, vấn đề với máy chủ của chúng tôi là, tôi không thể tìm thấy nginx cài đặt nhưng nó vẫn mang lại cho lỗi nginx
Raju Vishwas

tìm nginx bên trong / opt hoặc / etc. Bên trong nginx tìm thư mục conf rồi đến nginx.conf.
Arun

Nếu ý tưởng trên không hoạt động, hãy tìm kiếm nginx.conf bên trong toàn bộ Linux, bằng bất kỳ công cụ tìm kiếm nào.
Arun

`max_input_time = 24000`, 24000 tính bằng mili giây?
Rishabh Agrahari

1
@RishabhAgrahari Giây! Điều này đặt thời gian tối đa tính bằng giây. Cài đặt mặc định là -1, có nghĩa là max_execution_time được sử dụng thay thế. Đặt thành 0 để cho phép thời gian không giới hạn
Sean

18

Đầu tiên hãy chỉnh sửa tệp cấu hình Nginx ( nginx.conf)

Vị trí: sudo nano /etc/nginx/nginx.conf

Thêm các mã sau:

http {
        client_max_body_size 100M;
}

Sau đó Thêm các dòng sau vào tệp cấu hình PHP ( php.ini)

Vị trí: sudo gedit /etc/php5/fpm/php.ini

Thêm các mã sau:

memory_limit = 128M 
post_max_size = 20M  
upload_max_filesize = 10M

1
Tôi đã mở nginx.conftệp của mình theo hướng dẫn, nhưng nó trống! Tôi không mong đợi điều đó, nhưng khi tôi thêm mã của bạn, nó vẫn hoạt động ... như tôi đoán mọi người sẽ mong đợi, nhưng vì một số lý do tôi đã không làm như vậy và tôi rất vui khi nó đã làm được!
Andrew Fox,

8

Vui lòng nhập tệp nginx miền:

nano /etc/nginx/sites-available/domain.set

Thêm vào tệp mã này

client_max_body_size 24000M;

Nếu bạn gặp lỗi, hãy sử dụng lệnh này

nginx -t

8

Tôi thêm các thay đổi trực tiếp vào máy chủ ảo của mình thay vì cấu hình chung của nginx, như sau:

   server {
     client_max_body_size 100M;
     ...
   }

Và sau đó tôi thay đổi các tham số trong php.ini, giống như các nhận xét ở trên:

   max_input_time = 24000
   max_execution_time = 24000
   upload_max_filesize = 12000M
   post_max_size = 24000M
   memory_limit = 12000M

và những gì bạn không thể quên là khởi động lại nginx và php-fpm, trong centos 7 là như thế này:

  systemctl restart nginx
  systemctl restart php-fpm

6
sudo nano /etc/nginx/nginx.conf

Sau đó, thêm một dòng trong phần http

http {
    client_max_body_size 100M;
}

không sử dụng MB chỉ M.

systemctl restart nginx

sau đó cho vị trí php

sudo gedit /etc/php5/fpm/php.ini

cho ngày nay sử dụng tối đa php 7.0 trở lên

sudo nano /etc/php/7.2/fpm/php.ini     //7.3,7.2 or 7.1 which php you use

kiểm tra những người tăng theo mong muốn của bạn.

memory_limit = 128M 
post_max_size = 20M  
upload_max_filesize = 10M

khởi động lại php-fpm

service php-fpm restart 

4

Giả sử rằng bạn đã thực hiện các thay đổi cần thiết trong tệp php.ini của mình:

Bạn có thể giải quyết sự cố bằng cách thêm dòng sau vào tệp nginx.conf của bạn được tìm thấy trong đường dẫn sau:

/etc/nginx/nginx.conf

sau đó chỉnh sửa tệp bằng trình soạn thảo văn bản vim như sau:

vi /etc/nginx/nginx.conf

và thêm client_max_body_size với giá trị đủ lớn, ví dụ:

client_max_body_size 20MB;

Sau đó, hãy chắc chắn rằng bạn tiết kiệm bằng cách sử dụng :xihoặc:wq

Và sau đó khởi động lại nginx của bạn.

Đó là nó.

Làm việc cho tôi, hy vọng điều này sẽ giúp.


2

Tôi đã tải lên hoạt động với những thay đổi trên. Nhưng khi tôi thực hiện các thay đổi, tôi bắt đầu nhận được phản hồi 404 trong quá trình tải lên tệp, dẫn đến việc tôi phải gỡ lỗi thêm và tìm ra vấn đề về quyền bằng cách kiểm tra lỗi nginx .log

Giải pháp:

Kiểm tra người dùng hiện tại và quyền sở hữu nhóm trên / var / lib / nginx.

$ ls -ld /var/lib/nginx

drwx ------. 3 nginx nginx 17 Oct 5 19:31 / var / lib / nginx

Điều này cho biết rằng một người dùng và nhóm có thể không tồn tại tên nginx sở hữu thư mục này. Điều này đang ngăn tải tệp lên.

Trong trường hợp của tôi, tên người dùng được đề cập trong "/etc/nginx/nginx.conf" là

user vagrant; 

Thay đổi quyền sở hữu thư mục thành người dùng được xác định trong nginx.conf trong trường hợp này là vagrant.

$ sudo chown -Rf vagrant:vagrant /var/lib/nginx

Xác minh rằng nó thực sự đã thay đổi.

$ ls -ld /var/lib/nginx
drwx------. 3 vagrant vagrant 17 Oct  5 19:31 /var/lib/nginx

Tải lại nginx và php-fpm để an toàn hơn.

$ sudo service nginx reload
$ sudo service php-fpm reload

Lỗi bị từ chối quyền bây giờ sẽ biến mất. Kiểm tra lỗi.log (dựa trên vị trí error_log của nginx.conf).

$ sudo nano /path/to/nginx/error.log

0

Mở tệp /etc/nginx/nginx.conf Thêm hoặc thay đổiclient_max_body_size 0;


0

Sử dụng:

php -i

lệnh hoặc thêm:

phpinfo();

để lấy vị trí của tệp cấu hình.

Cập nhật các biến này theo nhu cầu và máy chủ của bạn

max_input_time = 24000
max_execution_time = 24000
upload_max_filesize = 12000M
post_max_size = 24000M
memory_limit = 12000M

Trên Linux, bạn sẽ cần khởi động lại dịch vụ nginx / apache và phpfpm để cài đặt ini mới được tải. Trên xampp, bạn có thể khởi động lại chúng từ bảng điều khiển đi kèm với các ứng dụng đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.