Мне нужно настроить nginx + gunicorn, чтобы иметь возможность загружать файлы, размер которых превышает максимальный размер по умолчанию на обоих серверах.
Мой файл nginx .conf выглядит так:
server {
# ...
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 60;
proxy_pass http://localhost:8000/;
}
}
Идея состоит в том, чтобы разрешить запросы 20M для двух местоположений:
/admin/path/to/upload?param=value
/installer/other/path/to/upload?param=value
Я пытался добавить location
директивы на том же уровне, что и тот, который я вставил здесь (с ошибкой 404), а также попытался добавить их внутри location /
директива (получение 413 Entity Too Large
ошибки).
Мои директивы местоположения выглядят так в своей простейшей форме:
location /admin/path/to/upload/ {
client_max_body_size 20M;
}
location /installer/other/path/to/upload/ {
client_max_body_size 20M;
}
Но они не работают (на самом деле я тестировал множество комбинаций и отчаянно думаю об этом.
Пожалуйста, помогите Если можете: Какие настройки мне нужно установить, чтобы это работало?
Спасибо вам большое!
Это, наконец, сработало, сделав что-то вроде этого:
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Protocol ssl;
proxy_connect_timeout 120;
proxy_pass http://localhost:8000/;
location /admin/path/to/upload {
client_max_body_size 50m;
proxy_pass http://localhost:8000/admin/path/to/upload;
}
}
Похоже, это почти работало, когда у вас client_max_body_size
в некорневых расположениях. Вы также установили dav_methods PUT;
в вашей конфигурации nginx для включения запросов PUT и DELETE?