nginx的413上传错误修复
nginx产生【413 request entity too large】
解决方法
Nginx中的【client_max_body_size
】配置属性
Nginx配置中限制了请求的实体大小,因此通过修改Nginx的配置文件来解决这个问题
根据项目找到对应的nginx配置文件对client_max_body_size
的值进行修改
http节点下:
1 | http { # 将Nginx代理的所有请求实体的大小限制为200m client_max_body_size 200m;} |
server节点下:
1 | server { # 将该服务下的所有请求实体的大小限制为200m client_max_body_size 200m;} |
location节点下:
1 | location /yanggb { # 将此路由请求的实体大小限制为20m client_max_body_size 20m;} |
Tomcat的【maxPostSize】配置属性
另外的,Tomcat下的conf文件夹中的server.xml文件中也有属性配置【maxPostSize】可以限制post请求参数的大小。
1 | <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8443" URIEncoding="UTF-8" maxThreads="3000" compression="on" compressableMimeType="text/html,text/xml" maxPostSize="256"/> <Connection port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" /> |
在php内上传也需要调整配置
找到php.ini文件后,就可以开始修改其中的上传设置了。以下是两个可能需要修改的设置:
修改上传文件的大小限制
默认情况下,PHP可能会将上传文件的大小限制在2M以下。这对于需要上传大文件的应用而言往往太小,因此需要手动修改php.ini文件以扩大上传文件的大小限制。在php.ini文件中找到以下设置:
upload_max_filesize = 2M
将其改为所需的大小,例如:
upload_max_filesize = 20M
这将允许上传20MB以下的文件。
添加更多的文件类型
默认情况下,PHP只允许上传一些常见的文件类型,例如jpg、png、gif等图像文件类型。但是,有时需要上传其他文件类型(如PDF文件、Word文档等),因此需要手动修改php.ini文件以添加更多的文件类型。
在php.ini文件中找到以下设置:
;upload_max_filetype = "application/octet-stream"
去掉前面的分号,并在后面添加所需的文件类型,例如:
upload_max_filetype = "application/octet-stream","application/pdf","application/msword"
这将允许上传octet-stream、PDF和Word文档文件。
修改完php.ini文件后,需要重新启动Web服务器才能使设置生效。在操作完成后,应该再次测试上传功能以确保修改成功。
备注
PHP5.3版本中出现了php.ini-developmen和php.ini-production
PHP配置文件与PHP5.2版本相比,命名发生了变化:
php.ini-production对应于 php.ini-recommended
php.ini-development对应于 php.ini-dist
通常要将 php.ini-production重命名为 php.ini
二者不同之处在于?php.ini-development适合开发程式使用(测试用)
而?php.ini-recommended拥有较高的平安性设定,则适合上线当产品使用。
所以,一般将 php.ini-recommended或者 php.ini-production修改为 php.ini确保测试环境(外地)与正式环境(线上)一致。