413 Запрос слишком большой объект nginx django

Я делаю практическую веб-службу (клиентский веб-сайт для отображения артбуков). Клиент может загружать изображения артбуков на сервер.

Но я получаю следующую ошибку, когда клиент загружает слишком много изображений

413 Request Entity Too Large

Я пробовал добавить client_max_body_size 100M; в nginx.conf

#user  nobody;
#Defines which Linux system user will own and run the Nginx server

worker_processes  1;

#error_log  logs/error.log; #error_log  logs/error.log  notice;
#Specifies the file where server logs.

#pid        logs/nginx.pid;
#nginx will write its master process ID(PID).

events {
    worker_connections  1024;
}


http {
    include       mime.types;

    default_type  application/octet-stream;

    #access_log  logs/access.log  main;

    sendfile        on;

    server {
        listen       80;

        server_name  xxxx.net;
        client_max_body_size 100M;
        keepalive_timeout 5;

        return 301 https://$server_name$request_uri;

    }

    # HTTPS server
    #
    server {
        listen       443 default_server ssl;
        server_name  xxx.net;

        ssl_certificate      /etc/letsencrypt/live/xxxx.net/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/xxxx.net/privkey.pem;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;


        location / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header HOST $http_host;
            proxy_set_header X-NginX-Proxy true;

            proxy_pass http://127.0.0.1:8000;
            proxy_redirect off;
        }
    }
}

и попробовал:

sudo service nginx restart
sudo service nginx reload

и повторить попытку

runserver 

но все равно получить

413 Request Entity Too Large

Кто-нибудь может помочь?


person Jade Han    schedule 03.05.2016    source источник
comment
Работает ли nginx самостоятельно или существует другая платформа (PHP, Python и т. Д.), Для которой он проксируется?   -  person solarissmoke    schedule 03.05.2016
comment
Также вы добавили client_max_body_size в блок HTTP-сервера, но не в блок HTTPS-сервера. Вероятно, в этом проблема.   -  person solarissmoke    schedule 03.05.2016
comment
Я решил свою проблему, HTTPS должен иметь client_max_body_size, спасибо @solarissmoke   -  person Jade Han    schedule 04.05.2016


Ответы (1)


Вы устранили проблему на своем HTTP-сервере, но для вашего HTTP-сервера установлено перенаправление 301 на ваш HTTPS-сервер ... на вашем HTTPS-сервере не настроено client_max_body_size, поэтому по умолчанию установлено значение 1M, вызывающее этот 413 ( Слишком большой объект запроса).

Чтобы решить эту проблему, вам просто нужно добавить client_max_body_size к ОБА блоку HTTP-сервера и к блоку HTTPS-сервера, как показано в примере ниже. :

http {
    ...
    ######################
    # HTTP server
    ######################
    server {
        ...
        listen       80;
        server_name  xxxx.net;
        client_max_body_size 100M;
        ...
    }

    ######################
    # HTTPS server
    ######################
    server {
        ...
        listen       443 default_server ssl;
        server_name  xxxx.net;
        client_max_body_size 100M;
        ...
    }
}

Подробнее о client_max_body_size здесь: http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size

Синтаксис: client_max_body_size size;

По умолчанию: client_max_body_size 1 м;

Контекст: http, сервер, местоположение

Устанавливает максимально допустимый размер тела запроса клиента, указанный в поле заголовка запроса Content-Length. Если размер в запросе превышает настроенное значение, клиенту возвращается ошибка 413 (Request Entity Too Large). Имейте в виду, что браузеры не могут правильно отображать эту ошибку. Установка размера на 0 отключает проверку размера тела клиентского запроса.

Дополнительные сведения о настройке серверов HTTPS см. Здесь: http://nginx.org/en/docs/http/configuring_https_servers.html

person Joshua Craven    schedule 17.05.2019