Nginx 限制上传文件大小,大文件失败

Troubleshooting 专栏收录该内容
1 篇文章 0 订阅

这里写图片描述

  • 问题描述: 公司ios和Android客户端时有上传图片失败的情况,经过测试确认只有大文件上传失败。

  • nginx.conf 配置

#user  nobody;
worker_processes  4; # 进程数,建议跟CPU核数相同

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  65535; # origin is 1024
    multi_accept on;
    use epoll;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    charset utf-8; # 头文件中的默认的字符集

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    server_names_hash_bucket_size 1280;

    client_header_buffer_size 1280m;
    large_client_header_buffers 4 1280m;
    client_max_body_size 1000m; # 允许客户端请求的最大单文件字节数
    client_body_buffer_size 2560m; # 缓冲区代理缓冲用户端请求的最大字节数

    server_tokens  off;
    sendfile       on;
    tcp_nopush     on;
    tcp_nodelay    on;

    keepalive_timeout  10; # 原始值为 65

    proxy_connect_timeout 60;
    proxy_read_timeout 60;
    proxy_send_timeout 60;
    proxy_buffer_size 32k;
    proxy_buffers 4 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k; # 缓存文件夹大小
    proxy_temp_path /tmp/proxy_temp_dir; # 缓存目录
    proxy_cache_path /tmp/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m inactive=7d max_size=2g;

    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 5m;

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/xml text/javascript application/json application/x-javascript application/javascript application/xml application/xml+rss;

    include conf.d/*.conf;

}

一、 故障原因

  • 当上传的文件大于 “proxy_temp_file_write_size“ 设置的值时,nginx会先将文件写入“proxy_temp_path ”缓存目录(默认为nginx安装目录下/proxy_temp目录)
  • 3服务器没有创建 /tmp/proxy_temp_dir 目录
  • 4服务器 /tmp/proxy_temp_dir nobody用户没有写权限

二、 解决步骤

  • 3 服务器:创建 /tmp/proxy_temp_dir 更改拥有者为nobody
  • 4 服务器:/tmp/proxy_temp_dir 更改拥有者为nobody
  • nginx 重启 问题解决

三、 注意事项

  • nginx 如果开启缓存参数,当前运行nginx的用户对两个参数设置的目录和上层目录一定要有写入权限。
    • proxy_temp_path
    • proxy_cache_path
  • 3
    点赞
  • 0
    评论
  • 6
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:精致技术 设计师:CSDN官方博客 返回首页

打赏作者

Air_Penguin

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值