nginx出现413 Request Entity Too Large的错误

2022-03-29 13:58:19 浏览数 (2)

今天测试人员在上传较大的文件时出现413错误,如下图所示:

也许你会说,已经有那么多写这类的文章了,你再在这里写岂不是多余,我也看了类似的文章,我在这里写出我的经历就是因为我的经历跟别人不太一样,所以才在此板书,下面入主题:

知道这个问题的小伙伴多半知道如何解决“常见的413”错误--在nginx的nginx.conf配置文件http部分增加下面配置client_max_body_size 1m(此处大小设置你想限制上传的文件大小,默认是1M,1.11版本及其以前版本多半是这个数值,不排除后期版本会不会修改);

我的经历不同之处在于:上面的设置对我来说没有一点效果!!我在本地测试时可以上传1M及其以上大小的文件,但是我在nginx.conf里面设置最大可上传大小为1M了啊,为什么没有效果呢,我研究了测试服务器上nginx的log日志,并对比了我自身电脑上nginx日志,发现了端倪:测试服务器在调用上传文件接口时会打印这条记录,但我自身电脑上却没有打印任何日志,于是我大胆的假设我在本自测上传文件时没有经过nginx,为什么会造成这种效果呢?

产生问题的根源就要分析nginx的反向代理功能了:

代码语言:javascript复制
server {
 listen       80;
 server_name  xx.xx.com;
 proxy_set_header X-Real-IP $remote_addr;
 
 location ~ /services {
 proxy_pass      http://127.0.0.1:21888;
 } 
 
 location ~ /{
 proxy_pass      http://127.0.0.1:8897;
 }
 }
 

server_name填写的是域名,但是我在使用jquery.file.upload插件上传文件时使用的是ip,这样就会导致调用接口时没有经过nginx,所以nginx的设置也就没有任何效果了。

解决方案:把上传文件处写的ip改成域名,并在本地的hosts文件中将该域名映射为127.0.0.1,然后再在nginx.conf文件里面添加上面的反向代理部分即可。

0 人点赞