Назад | Перейти на главную страницу

Ошибка Nginx 413

Первоначально я разместил это на 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