今天在做图片上传的时候,生产环境莫名其妙出现一个问题
bash
413 Request Entity Too Large
搜了一圈,发现Nginx默认的上传文件大小限制为1MB,超过该限制会导致客户端收到413 Request Entity Too Large
错误!!! 以下是解决方案:
1. 修改Nginx配置文件 在Nginx配置文件中(通常为nginx.conf
或站点配置文件),通过client_max_body_size
指令调整限制:
nginx
# 全局生效(http块)
http {
client_max_body_size 20M; # 设置为20MB,按需调整
...
}
# 或针对特定Server生效(server块)
server {
client_max_body_size 20M;
...
}
# 或针对特定路由生效(location块)
location /upload {
client_max_body_size 20M;
...
}
说明: • http
块配置全局生效,server
块作用于站点,location
块作用于具体路径。
• 支持单位:k
(KB)、m
(MB)、g
(GB)。
2. 重启Nginx服务 修改配置后需重载配置(无需完全重启):
bash
nginx -s reload
3. 其他注意事项 • 后端服务限制:若后端(如PHP、Laravel)也有文件大小限制,需同步调整(如php.ini
中的upload_max_filesize
和post_max_size
)。
• 缓冲区优化:若上传大文件,可调整client_body_buffer_size
和client_header_buffer_size
减少磁盘I/O。
• 安全风险:将client_max_body_size
设为0
可禁用限制,但可能引发资源耗尽攻击,需谨慎使用。
小结
通过修改Nginx的client_max_body_size
参数并重载配置,即可解决文件上传大小超限问题。若需更细粒度控制,可结合server
或location
块配置。