Первоначально я разместил это на Stack Overflow, а затем вспомнил, что SO не для вопросов, связанных с сервером.
Привет ребят,
Когда я пытаюсь загрузить файл на свой сайт, у меня появляется ошибка Nginx «413 Request Entity Too Large», однако в моем файле nginx.conf я уже явно указал, что максимальный размер на данный момент составляет около 250 МБ, и также изменил максимальный размер файла в php.ini (и да, я перезапустил процессы). Журнал ошибок дает мне следующее:
2010/12/06 04:15:06 [ошибка] 20124 # 0: * клиент 11975 намеревался отправить слишком большое тело: 1144149 байт, клиент: 60.228.229.238, сервер: www.x.com, запрос: "POST / upload HTTP / 1.1 ", хост:" x.com ", реферер:"http://x.com/"
Насколько мне известно, 1144149 байт - это не 250 МБ ... Что-то мне здесь не хватает?
Вот базовая конфигурация Nginx:
user nginx;
worker_processes 8;
worker_rlimit_nofile 100000;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
client_max_body_size 300M;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;
gzip on;
gzip_static on;
gzip_comp_level 5;
gzip_min_length 1024;
keepalive_timeout 300;
limit_zone myzone $binary_remote_addr 10m;
# Load config files from the /etc/nginx/conf.d directory
include /etc/nginx/sites/*;
}
И vhost для сайта:
server {
listen 80;
server_name www.x.com x.com;
access_log /var/log/nginx/x.com-access.log;
location / {
index index.html index.htm index.php;
root /var/www/x.com;
if (!-e $request_filename) {
rewrite ^/([a-z,0-9]+)$ /$1.php last;
rewrite ^/file/(.*)$ /file.php?file=$1;
}
location ~ /engine/.*\.php$ {
return 404;
}
location ~ ^/([a-z,0-9]+)\.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
Я что-то упустил?
Если вы столкнулись с этой проблемой, когда client_max_body_size не кажется, что ее соблюдают, убедитесь, что на всех ваших серверах, через которые проходит веб-трафик, правильно настроен этот параметр конфигурации. В моем случае я настроил серверы приложений, но забыл настроить балансировщик нагрузки с этим параметром.
Попробуйте переместить client_max_body_size внутрь серверного блока.
Вы могли бы установить client_max_body_size
в нескольких местах или файлах. Например, последняя строка вашей конфигурации включает любые файлы конфигурации из sites
каталог: include /etc/nginx/sites/*
Найти все вхождения client_max_body_size
выполнив эту команду в каталоге nginx:
sudo grep -R 'client_max_body_size' ./*
Если вы удалите или обновите все эти вхождения, вы будете в хорошей форме. У меня была такая же проблема, и я ломал голову над тем, что это могло быть.
JP