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

.NET 5 AWS Elastic Beanstalk Nginx修改client_max_body_size咨询

问题描述

我将.NET 5项目通过Visual Studio 2019的AWS Toolkit部署到AWS Elastic Beanstalk Linux环境,代理服务器使用Nginx,受默认配置限制,无法上传超过1MB的文件。我查阅相关资料后得知需要将Nginx的client_max_body_size参数设置为20M以支持大文件上传,但我在.NET项目中找不到对应的Nginx配置文件,仅能看到aws-beanstalk-tools-defaults.json配置文件,内容如下:

{
 "region" : "eu-west-2",
 "configuration" : "Release",
 "framework"     : "net5.0",
 "self-contained" : false,
 "application"    : "testapplication",
 "environment"    : "testapplication-prod-env",
 "enable-xray"    : false,
 "enhanced-health-type" : "basic",
 "additional-options"   : "",
 "proxy-server"         : "nginx",
 "solution-stack"       : "64bit Amazon Linux 2 v2.1.5 running .NET Core",
 "environment-type"     : "LoadBalanced",
 "cname"                : "vitradssltest-prod",
 "instance-type"        : "t3a.nano",
 "key-pair"             : "my key pair for testing",
 "instance-profile"     : "aws-elasticbeanstalk-ec2-role",
 "service-role"         : "aws-elasticbeanstalk-service-role",
 "loadbalancer-type"    : "classic",
 "health-check-url"     : "/"
}

相关截图:
01_nginx.config
file location
请问我该如何正确修改client_max_body_size参数以解除大文件上传限制?


解决方案

步骤1:添加Nginx自定义配置到项目

在你的.NET 5项目根目录下,按层级创建如下目录结构:

.platform
└── nginx
    └── conf.d
        └── upload_limit.conf

在upload_limit.conf文件中写入以下内容:

client_max_body_size 20M;

注:AWS Elastic Beanstalk的Amazon Linux 2 .NET运行环境会自动加载.platform/nginx/conf.d/目录下所有后缀为.conf的配置文件,合并到默认Nginx配置中生效。

步骤2:调整.NET 5本身的上传大小限制

仅修改Nginx配置不够,还需要解除.NET运行时的默认上传限制,修改方案如下:

  1. 打开Program.cs文件,在WebHost配置段添加Kestrel的大小限制:
public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
            // 新增以下配置,限制为20M,单位是字节
            webBuilder.ConfigureKestrel(serverOptions =>
            {
                serverOptions.Limits.MaxRequestBodySize = 20 * 1024 * 1024;
            });
        });
  1. 如果使用了表单上传,还需要在Startup.cs的ConfigureServices方法中添加表单限制配置:
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    // 新增表单上传限制配置
    services.Configure<FormOptions>(options =>
    {
        options.MultipartBodyLengthLimit = 20 * 1024 * 1024;
    });
}

步骤3:重新部署项目

右键点击项目中的.platform目录,选择「属性」,将「复制到输出目录」选项设置为「如果较新则复制」,确保配置文件会随项目一起打包。之后通过Visual Studio的AWS Toolkit重新部署到Elastic Beanstalk即可,新配置会自动生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:24:03