部署Keystonejs网站,对外使用nginx作为反向代理服务器。在上传图片时,出现了413 Request Entity Too Large的错误,完整错误信息如下:

Failed to load resource: the server responded with a status of 413 (Request Entity Too Large)

这是由于nginx的client_max_body_size默认配置为1MB,当上传到文件小于1MB的时候是不会出现上面错误的。那找到了问题出在哪里,就可以对症下药了。

解决办法

可以把client_max_body_size修改的大一点,比如20MB,30MB,这个要根据你网站的实际情况来决定。

这里再多说一点,client_max_body_size可以写在配置文件中的3个位置,分别是http、server和location。http中的client_max_body_size对所有的请求的报文大小起作用,server中则对匹配的网站起作用,同理,location中的只对匹配的路由起作用。

下面我以配置在server中为例。

server {
  client_max_body_size   30M;

  listen 80;
  server_name www.chengxulvtu.net;

  location / {
    proxy_pass http://localhost:3000;
  }
}