EC2实例Amazon Linux系统Nginx 413请求实体过大问题求助
解决Nginx上传大文件报413 Request Entity Too Large的具体步骤(Amazon Linux环境)
一、修正Nginx配置的核心问题
你之前的配置漏了单位,Nginx里client_max_body_size 100会被解析成100字节,完全达不到100MB的需求,这是关键错误。按以下步骤修改:
- 打开Nginx主配置文件:
sudo nano /etc/nginx/nginx.conf - 在
http { ... }代码块内添加一行(可放在server_tokens off;这类配置附近):client_max_body_size 100M;- 如果只想给特定站点生效,找到对应站点的配置文件(通常在
/etc/nginx/conf.d/目录下,比如default.conf),在server { ... }块内添加上述配置即可。
- 如果只想给特定站点生效,找到对应站点的配置文件(通常在
- 按
Ctrl+O保存,Ctrl+X退出编辑器。
二、验证配置语法正确性
修改后先别着急重启,先检查配置有没有语法错误:
sudo nginx -t
如果输出nginx: configuration file /etc/nginx/nginx.conf test is successful,说明配置没问题;如果报错,根据提示修正(比如括号不匹配、拼写错误等)。
三、正确重启Nginx服务
Amazon Linux不同版本的服务命令略有区别,选对应命令执行:
- Amazon Linux 2 或更高版本:
sudo systemctl restart nginx - Amazon Linux 1:
sudo service nginx restart
重载(reload)有时候可能不会完全加载新配置,直接重启更稳妥。
重启后检查服务状态,确保Nginx正常运行:
# Amazon Linux 2+ sudo systemctl status nginx # Amazon Linux 1 sudo service nginx status
四、排查其他可能的限制
如果上述步骤做完还是报413,检查以下内容:
- 若Nginx后端有应用(比如PHP、Node.js),应用自身可能有上传大小限制:
- 以PHP为例:修改
/etc/php.ini里的upload_max_filesize = 100M和post_max_size = 100M,然后重启PHP-FPM服务(sudo systemctl restart php-fpm)。
- 以PHP为例:修改
- 确认EC2实例的磁盘空间足够存放上传的文件,避免因磁盘满导致的间接报错。
五、测试上传效果
用curl命令快速测试(替换为你的实际文件路径和上传接口):
curl -X POST -F "file=@/path/to/your-100MB-file" http://你的EC2公网IP/上传接口路径
如果没有返回413错误,说明配置生效。
内容的提问来源于stack exchange,提问作者Rajat
相关产品推荐
相关产品推荐

