【问题标题】:Large file upload to nginx fails大文件上传到 nginx 失败
【发布时间】: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。

标签: nginx


【解决方案1】:

您可能会遇到配置范围问题,请尝试在 http{} 块内声明 client_max_body_size 200M;。你会发现它在/etc/nginx/nginx.conf

如果这不起作用,请尝试在特定的 location{} 块内声明。

如果这不起作用,可能是您的配置中有一些错误,您可以使用它来检查

$ nginx -t

如果没有错误,请尝试重新启动服务器而不是仅重新加载它:

$ service nginx restart

如果你仍然没有成功,可能你的 API 的最大上传大小有问题,这取决于你的系统堆栈如何修复它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-06
    • 2021-12-07
    • 2012-05-31
    • 2011-05-04
    • 1970-01-01
    • 2021-01-09
    • 2014-06-13
    • 2012-04-12
    相关资源
    最近更新 更多