nginx反向代理踩过的坑

8 篇文章 0 订阅
  • nginx作代理服务器,无法上传大于1M文件

解决方式

在proxy_pass的location添加下面2行解决。

client_max_body_size  512m;

client_body_buffer_size 10m;

client_max_body_size 

默认1M,表示客户端上传到服务器最大允许大小,文件到服务器端后(后台检验),检验发现大于该值,HTTP协议会报错 413 Request Entity Too Large。(注意这仅仅影响上传)

client_body_buffer_size

小于client_body_buffer_size直接将数据先在内存中存储。如果请求的值大于client_body_buffer_size小于client_max_body_size,就会将数据先存储到临时文件中。

以下实验nginx的版本1.17.3 

linux环境  

   client_max_body_size  3g;   

   client_body_buffer_size  50m;(单位不可为g,不然启动报错)

 client_body_buffer_size 值尝试1m-3072m 上传2.4GB的文件结果都成功!

windows版本下

问题多多值得注意!

  client_max_body_size  3g;

  client_body_buffer_size  2047m;(单位不可为g,可成功启动最大值是2047m,但看下面)

上传2.4GB的文件结果:失败  

nginx报错 

malloc(2146435072) failed (8: Not enough storage is available to process this command)

情况说明

1. 即使我添加主机物理内存到6GB,可用5GB。也报这错

2. 即使上传2KB的文件,也报这错

3. 尝试将client_body_buffer_size值设置在大于1024m以,上传1300m可成功,但上传文件如1500m会出错。

4. client_body_buffer_size值设置在小于等于1024m,可成功上传1900m。但上传2048m失败,也报这错。

5. 当上传的单文件大于client_body_buffer_size值时,而小于client_max_body_size某些情况下也会出现上传故障。

那Windows版本nginx如何设置,

1. client_body_buffer_size 值不要大于或接近1024m。

2. client_max_body_size 和client_body_buffer_size相同的值,(毕竟存放内存,也高效)。

 

另外注意。  因设置 client_body_buffer_size过大,数据先存储到内存,但实际占用内存是双倍的,上传完毕释放。

  • Nginx报504 gateway timeout错误

网站项目有Excel导入的功能,执行一个非常耗时的文件,超时不返回,浏览器返回504 gateway timeout错误!

解决方式

在proxy_pass的location添加以下

proxy_connect_timeout 3600s;

proxy_send_timeout 3600s;

proxy_read_timeout 3600s;

以上的单位是秒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值