用GHOST发博客时,图片稍多一点就提示request entity too large,搞得好几个农场溯源一直没发成,心事一桩。
一、优先怀疑是nginx的问题

https://stackoverflow.com/questions/2056124/nginx-client-max-body-size-has-no-effect

修改ningx配置中的http部分,直接写在location里面也应该可以的

{ client_max_body_size 50M; client_body_buffer_size 16K; }

没有效果,冰一下,关键词加上node.js排除nginx,有人说是koa问题

二、koa question

https://www.cnblogs.com/Eden-cola/p/koa-bodyparser-413.html

大意是说要修改formLimit,在ghost源码下没找到koa的影子(后来知道ghost用的是express框架+hbs模板,没文化还是很浪费生命的)

三、老老实实回去读错误信息/var/www/ghost/content/logs/*.error.log

人家明明白白的写着是Express里面的body-parse在出错

at jsonParser (/var/www/ghost/versions/2.15.0/node_modules/body-parser/lib/types/json.js:135:5)\n ... at /var/www/ghost/versions/2.15.0/node_modules/express/lib/router/index.js:284:7\n ... "msg":"request entity too large","time":"2019-06-08T00:16:52.767Z","v":0}


四、很快锁定body-parser,这东东负责把文章内容做json类型处理

修改body-parser中的json.js第138行 ,将不知道在那里配置的参数limit,直接改为'50mb'

read(req, res, next, parse, debug, { encoding: charset, inflate: inflate, limit: '50mb', verify: verify })

搞定,粗鲁了一点,没时间撸参数设置了,哈哈哈。不过以后动手前,先读后台错误是必须不能省的。