.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" : "/" }
相关截图:

请问我该如何正确修改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运行时的默认上传限制,修改方案如下:
- 打开
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; }); });
- 如果使用了表单上传,还需要在
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
相关产品推荐
相关产品推荐

