nginx上传⽂件⼤⼩报错500的解决办法
nginx上传⽂件⼤⼩报错500的解决办法
采⽤nginx作反向代理,出现了⼀个诡异的问题,⼩⽂件可以提交,⼤⽂件会报500内部错误。这个是什么原因导致的呢?
查wiki可知,上传⽂件⼤⼩相关的有三个配置
client_body_buffer_size 配置请求体缓存区⼤⼩, 不配的话,
client_body_temp_path 设置临时⽂件存放路径。只有当上传的请求体超出缓存区⼤⼩时,才会写到临时⽂件中
client_max_body_size 设置上传⽂件的最⼤值
所以查出来,问题出现的原因是
1. ⽂件⼤⼩超过了client_body_buffer_size
2. client_body_temp_path的临时⽂件路径居然没有写权限
以上两个原因导致了返回500错误。
如果上传⽂件⼤⼩超过client_max_body_size时,会报413 entity too large的错误。
原因知道了,修正就简单了。
1.client_body_buffer_size 尽量设置的⼤点,这是基于速度的考虑,如果因为设置的过⼩,导致上传的⽂件⽼要写磁盘,那速度就太慢了。
2.client_body_temp_path 路径要有可写权限,这个是明显的错误了。改正了就好大文件发送
3.client_max_body_size 设置上传⽂件的最⼤值,这个是基于安全的考虑,我们认为正常⽤户不会或者基本不会上传太⼤的⽂件。
可以设置为client_max_body_size 100m; 或者按照⾃⼰的业务来设置这个值。