.Net 5 AWS nginx Linux弹性beantalk改变client_max_body_size
Posted
技术标签:
【中文标题】.Net 5 AWS nginx Linux弹性beantalk改变client_max_body_size【英文标题】:.Net 5 AWS nginx Linux elastic beanstalk changing client_max_body_size 【发布时间】:2021-11-20 15:32:54 【问题描述】:由于 AWS elastic beanstalk nginx 的默认设置,我无法上传超过 1 兆字节的文件。我在网上看了,我发现我需要将client_max_body_size更改为client_max_body_size 20M以允许更大的文件。但是,我没有地方可以这样做。 .net 上没有 Nginx 配置文件。我正在使用 .net 5,然后在 Visual Studio 19 上使用 aws 工具包将其上传到弹性 beanstalk。我能看到的唯一配置文件是 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" : "/"
【问题讨论】:
【参考方案1】:由于您使用的是64bit Amazon Linux 2 v2.1.5 running .NET Core
nginx 默认开启。因此,我看不出有任何理由说明自定义 nginx 的标准方式对您不起作用。
具体来说,自定义设置应在.platform/nginx/conf.d/
中,如docs 所示。因此,您可以使用以下内容创建以下.platform/nginx/conf.d/myconfig.conf
文件:
client_max_body_size 20M;
【讨论】:
我确实尝试过这种方式,但是,如果我将新代码重新上传到弹性 beanstalk 上,您必须继续重新配置配置文件。不记得client_max_body_size 20M; @GolfBravo 是的,这就是 eb 的工作方式,这是设计使然。重新配置由 eb 自动完成,因此您不必担心。 有没有办法添加client_max_body_size 20M;到.net 源包中的配置文件?我遇到的问题是我找不到 .net 的任何源包文件,因为它是使用 Visual Studio 自动完成的。我真的不想每次有新部署时都手动更新配置文件。 @GolfBravo .platform/nginx/conf.d/myconfig.conf 应该是您的源代码包的一部分。如果将此文件添加到代码中,则无需手动执行任何操作。 没有包含源代码包的文件或文件夹。我认为它是由视觉工作室在幕后自动创建的,从未展示过。我找不到任何具有名为 .platform 或 linux 的文件或文件夹的东西。我能看到的唯一文件是 aws-beanstalk-tools-defaults.json【参考方案2】:这已经通过 AWS 弹性 beantalk 实现了。虽然你的图片可能不同,但我使用了以下流程:
在解决方案的根目录下添加一个文件夹并将其命名为 '.ebextensions' 在该文件夹中,添加一个新文件并将其命名为 '01_nginx.config' 将文件内容更新为以下内容在我研究过的类似解决方案中,它看起来像这样:
files:
"/etc/nginx/conf.d/01_proxy.conf":
mode: "000644"
owner: root
group: root
content: |
client_max_body_size 20M;
当您将更改部署到弹性 beanstalk 时,它将从 ebextensions 文件夹中读取并应用所有文件更新。
【讨论】:
我尝试按照您说的做,但是,我仍然收到 Request Entity Too Large 403 的错误消息。我已经打印了配置文件和位置。以上是关于.Net 5 AWS nginx Linux弹性beantalk改变client_max_body_size的主要内容,如果未能解决你的问题,请参考以下文章
AWS弹性Beanstalk / nginx:connect()失败(111:连接被拒绝
在 aws linux 2 实例上使用弹性 beanstalk 运行 django-q
使用弹性 beantalk 问题部署 Asp.net Web 应用程序
使用 AWS 弹性 beanstalk 负载均衡器在 Rails 上实施 https 连接
我在 AWS linux 2 上设置弹性 beanstalk 时遇到问题。这是一个以 Postgres 作为数据库的 laravel 应用程序。用户密码验证失败