如何提升AWS EC2负载均衡器请求体大小限制?解决413错误
解决Lambda调用ELB返回413 Payload Too Large的问题
1. 调整负载均衡器(ELB)的请求大小限制
从响应的域名来看,你使用的是AWS经典负载均衡器(CLB),它默认的请求体大小上限为1MB,这正是1.6MB payload触发413错误的核心原因。你可以通过以下方式调整:
- CLI方式:执行命令修改CLB属性,将最大请求体大小调整为所需值(示例设置为16MB):
aws elb modify-load-balancer-attributes --load-balancer-name YOUR_CLB_NAME --attributes "{\"HttpSettings\":{\"MaxRequestBodySize\":16777216}}" - 控制台方式:进入EC2控制台的负载均衡器页面,找到目标CLB,切换到「属性」标签,在「HTTP设置」模块修改「最大请求体大小」参数。
如果是应用负载均衡器(ALB),默认上限同样是1MB,可在控制台的ALB「属性」→「HTTP/HTTPS设置」中调整至最大16MB。
2. 配置EC2后端Web服务的请求大小限制
ELB的限制调整后,必须同步修改EC2上Web服务的对应配置,否则后端仍会拦截大请求:
- Nginx:在站点配置文件或
nginx.conf中添加/修改:
重启服务生效:client_max_body_size 16M;sudo systemctl restart nginx - Apache:在
httpd.conf或.htaccess中添加:
重启服务:LimitRequestBody 16777216sudo systemctl restart httpd - Tomcat:修改
server.xml的Connector节点,添加maxPostSize参数(Tomcat 8.5+可设为-1表示无限制,或指定具体字节数):
重启Tomcat服务。<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxPostSize="16777216"/>
3. 确认Lambda端无额外限制
Lambda本身处理1.6MB请求体无压力,只需检查代码中使用的HTTP客户端(如Python的requests、Node.js的axios)是否设置了过小的请求体上限,确保没有自定义限制逻辑即可。
内容的提问来源于stack exchange,提问作者AKALawrence
相关产品推荐
相关产品推荐

