Téléchargement de files et client_max_body_size dans nginx + gunicorn + django

J'ai besoin de configurer nginx + gunicorn pour pouvoir download des files supérieurs à la taille maximale par défaut dans les deux servers.

Mon file .conf nginx ressemble à ceci:

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/; } } 

L'idée est de permettre des requests de 20M pour deux locations:

  • /admin/path/to/upload?param=value
  • /installer/other/path/to/upload?param=value

J'ai essayé d'append des directives de location au même niveau que celui que j'ai collé ici (obtenant 404 erreurs) et j'ai également essayé de les append à l' location / directive (obtenant 413 Entity Too Large erreurs).

Mes directives de localization ressemblent à celles-ci sous leur forme la plus simple:

 location /admin/path/to/upload/ { client_max_body_size 20M; } location /installer/other/path/to/upload/ { client_max_body_size 20M; } 

Mais ils ne fonctionnent pas (en fait, j'ai testé beaucoup de combinaisons et je pense désespérément à ce sujet.

S'il vous plaît, aidez-vous Si vous le pouvez: Quels réglages dois-je définir pour que cela fonctionne?

Merci beaucoup!

Cela a finalement fonctionné comme ceci:

 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; } } 

On dirait qu'il fonctionnait presque lorsque vous aviez le client_max_body_size dans les sites non-racine. Avez-vous également défini dav_methods PUT; dans votre nginx conf pour activer les requêtes PUT et DELETE?