Nginx 报错 500 Internet Eror

问题描述:

    前端传送图片时,返回 500 internet error。

原因分析:

  1. 由于服务器是通过nginx反向代理请求,所以报500 的错误原因是,服务器内部请求错误。
  2. 当传送的图片/文件过大时才出现这种错误。

解决方法:

       修改nginx.conf,在nginx 的http出添加以下配置。

http {
    include       mime.types;
    default_type  application/octet-stream;
    client_max_body_size  50m;
    client_body_buffer_size 1m;
    client_header_buffer_size 10m;
    large_client_header_buffers 4 10m;
    
    ...
   
    }

说明:

client_max_body_size  50m;   

浏览器在发送含有较大HTTP包体的请求时,其头部会有一个Content-Length字段,client_max_body_size是用来限制Content-Length所示值的大小的。因此,这个限制包体的配置非常有用处,因为不用等Nginx接收完所有的HTTP包体,这有可能消耗很长时间,就可以告诉用户请求过大不被接受。例如,用户试图上传一个10GB的文件,Nginx在收完包头后,发现Content-Length超过client_max_body_size定义的值,就直接发送413(Request Entity Too Large)响应给客户端。

client_body_buffer_size 1m;    

定义了Nginx接收HTTP包体的内存缓冲区大小。也就是说,HTTP包体会先接收到指定的这块缓存中,之后才决定是否写入磁盘。注意 如果用户请求中含有HTTP头部Content-Length,并且其标识的长度小于定义的buffer大小,那么Nginx会自动降低本次请求所使用的内存buffer,以降低内存消耗。

client_header_buffer_size 10m;

定义了正常情况下Nginx接收用户请求中HTTP header部分(包括HTTP行和HTTP头部)时分配的内存buffer大小。有时,请求中的HTTP header部分可能会超过这个大小,这时large_client_header_buffers定义的buffer将会生效。

large_client_header_buffers 4 10m;

定义了Nginx接收一个超大HTTP头部请求的buffer个数和每个buffer的大小。如果HTTP请求行(如GET/index HTTP/1.1)的大小超过上面的单个buffer,则返回Request URI too large(414)。请求中一般会有许多header,每一个header的大小也不能超过单个buffer的大小,否则会返回Bad request(400)。当然,请求行和请求头部的总和也不可以超过buffer个数*buffer大小。

最后重新加载nginx配置,问题解决。

 

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值