我需要配置 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;
}
但它们不起作用(实际上我测试了很多组合并且我对此感到绝望。
如果可以的话,请帮忙:我需要设置哪些设置才能使其正常工作?
太感谢了!
答案1
这最终起到了如下作用:
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;
}
}
答案2
听起来,当您client_max_body_size
在非根位置时,它几乎可以正常工作。您是否还在dav_methods PUT;
nginx conf 中设置了启用 PUT 和 DELETE 请求?