大文件上传到 nginx 失败
Posted
技术标签:
【中文标题】大文件上传到 nginx 失败【英文标题】:Large file upload to nginx fails 【发布时间】:2019-01-23 05:29:50 【问题描述】:我使用 nginx 作为反向代理。客户端应用程序在 POST 请求中上传多个图像文件。对于较大的请求,请求通常在 8M 和 9M 之间。我尝试了多种选择,包括设置 client_max_body_size。我已将值增加到 300M。我也尝试了其他一些选项。
nginx配置文件如下:
server
listen 443 ssl ;
server_name app.example.com;
charset utf-8;
client_max_body_size 200M;
# client_body_in_file_only on;
# client_body_temp_path /var/spool/nginx;
# client_body_buffer_size 32K;
location /
alias /var/www/html/;
try_files $uri /index.html;
location /api
proxy_pass http://localhost:8092/api;
proxy_set_header Host $host;
错误日志是
[错误] 22959#22959: *4 客户端打算发送太大的正文:8326396 字节,客户端:
【问题讨论】:
我看到你的配置是 HTTPS 的,你有类似的 HTTP 配置吗?客户端确定连接到 HTTPS 端口了吗? @kristaps 客户端只连接到 HTTPS。我有一个 HTTP 配置,它将用户重定向到 HTTPS。 【参考方案1】:您可能会遇到配置范围问题,请尝试在 http
块内声明 client_max_body_size 200M;
。你会发现它在/etc/nginx/nginx.conf
如果这不起作用,请尝试在特定的 location
块内声明。
如果这不起作用,可能是您的配置中有一些错误,您可以使用它来检查
$ nginx -t
如果没有错误,请尝试重新启动服务器而不是仅重新加载它:
$ service nginx restart
如果你仍然没有成功,可能你的 API 的最大上传大小有问题,这取决于你的系统堆栈如何修复它。
【讨论】:
以上是关于大文件上传到 nginx 失败的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Nginx(反向代理+SSL 协商)和 Tomcat 上传大文件