You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core部署AWS ElasticBeanstalk可否通过appsettings.json配置nginx的client_max_body_size

ASP.NET Core部署到AWS Elastic Beanstalk 413请求过大问题解决方案

核心问题答疑

  • 无法在appsettings.json中添加nginx配置:appsettings.json是ASP.NET Core应用的专属配置文件,仅负责存储应用自身的运行参数,不支持控制反向代理层的nginx服务配置。
  • 之前的.ebextensions/.platform配置未生效,90%以上的原因是Visual Studio发布时没有将这两个目录下的配置文件打包进部署包:你需要选中两个目录下的所有配置文件,右键打开属性面板,将生成操作设置为「内容」,复制到输出目录设置为「如果较新则复制」,重新发布即可。

正确的nginx参数配置方法(优先处理,否则代码层面配置无效)

如果你使用的是目前主流的Amazon Linux 2版本Elastic Beanstalk运行环境:

  1. 在项目根目录创建.platform/nginx/conf.d/层级目录
  2. 在该目录下新建proxy.conf文件,写入内容:
client_max_body_size 50M;

你可以自行调整数值大小,配置正确发布后,Elastic Beanstalk会自动加载该配置覆盖默认的nginx参数。

ASP.NET Core代码层面的请求大小配置

如果nginx参数配置完成后依然出现413错误,是因为ASP.NET Core自带的Kestrel服务器也有默认的请求大小限制,可通过以下方式调整:

全局配置(所有接口生效)

.NET 6及以上版本,在Program.cs文件开头添加配置:

var builder = WebApplication.CreateBuilder(args);
// 调整Kestrel最大请求体大小,以下示例为50M,单位为字节
builder.WebHost.ConfigureKestrel(options =>
{
    options.Limits.MaxRequestBodySize = 50 * 1024 * 1024;
});

.NET 5及更早版本,在Program.cs的CreateHostBuilder方法中添加:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
            webBuilder.ConfigureKestrel(options =>
            {
                options.Limits.MaxRequestBodySize = 50 * 1024 * 1024;
            });
        });

单接口配置(仅上传接口生效,更安全)

如果不需要全局放开限制,只需要给文件上传接口单独调整阈值,在对应的Action方法上添加特性即可:

// 同时调整请求体大小和表单提交大小限制,以下示例为50M
[RequestSizeLimit(50 * 1024 * 1024)]
[RequestFormLimits(MultipartBodyLengthLimit = 50 * 1024 * 1024)]
[HttpPost]
public async Task<IActionResult> UploadFile(IFormFile uploadFile)
{
    // 你自己的上传逻辑
}

注:nginx和Kestrel两个层级的限制都要大于你允许上传的文件最大尺寸,否则会继续触发413错误

内容的提问来源于stack exchange,提问作者Dean Pinlac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:45:05