.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 弹性负载均衡器超时

在 aws linux 2 实例上使用弹性 beanstalk 运行 django-q

使用弹性 beantalk 问题部署 Asp.net Web 应用程序

使用 AWS 弹性 beanstalk 负载均衡器在 Rails 上实施 https 连接

我在 AWS linux 2 上设置弹性 beanstalk 时遇到问题。这是一个以 Postgres 作为数据库的 laravel 应用程序。用户密码验证失败