【问题标题】:在 AWS Elastic Beanstalk 上的 Nginx conf 中增加 client_max_body_size
【发布时间】:2013-09-25 08:23:00
【问题描述】:

在将大于 10MB 的文件发布到我们在 AWS Elastic Beanstalk 上运行的 API 时,我遇到了 “413 Request Entity Too Large” 错误。

我已经进行了大量研究,并认为我需要为 Nginx 提高 client_max_body_size,但是我似乎找不到任何有关如何使用 Elastic Beanstalk 执行此操作的文档。我的猜测是它需要使用 ebetension 文件进行修改。

有人对我如何达到极限有想法吗? 10MB 太弱了,必须有办法手动增加。

【问题讨论】:

  • 现在默认只有1MB...
  • 记录在案的所有提供的解决方案都不处理 .NET 部署。如果您在 AWS Elastic Beanstalk 中使用 .NET,则必须在项目中配置 IIS 设置。对我来说,我必须在我的 net471 应用程序中配置 web.config。

标签: amazon-web-services nginx amazon-ec2 amazon-elastic-beanstalk


【解决方案1】:

对于 AWS Beanstalk 上的 Spring Boot / Java / Fat-Jar 部署:

在 AWS Linux 2 中需要使用 .platform 的 previous answer,但与 .ebextensions 不同,您不能将 .platform 目录包含在 fat jar 中 - 它必须在 Java jar 之外。

这篇有用的帖子描述了如何设置 Maven 以创建 AWS fat jar 以进行部署。

https://www.coderdreams.com/deploying-spring-boot-app-to-aws-beanstalk-with-nginx-customization/

注意:不需要像上一个答案那样创建脚本来重新启动 nginx 服务器。

【讨论】:

    【解决方案2】:

    Amazon Linux 2 的超级简单解决方案:

    1. 在与.ebextensions.elasticbeanstalk 相同的级别上,创建一个 名为.platform 的目录
    2. 在此目录下创建一个文件(显示完整路径),名为:.platform/nginx/conf.d/client_max_body_size.conf
    3. 将这一行添加到client_max_body_size.conf 文件:client_max_body_size 20M;
    4. 部署!!

    这是基于AWS NGINX "Reverse proxy configuration" Documentation

    (这适用于在 64 位 Amazon Linux 2/3.2.0 上运行的 Django 3.1.4 + Python 3.7)

    【讨论】:

    • 也适用于在 Amazon Linux 2 上运行的 NodeJS!
    • 这似乎对我不起作用...我也尝试过 .ebextensions 中的相同目录
    【解决方案3】:

    在 EBS 中为 Nginx 创建自动配置

    由于 EBS 是自动缩放的,我们无法手动增加大小和请求超时,因此我们必须在源代码中添加 conf 文件,该文件会自动包含在 EBS 的 nginx 配置中

    https://akshaykrisonz.medium.com/fix-413-request-entity-too-large-nginx-error-on-aws-elastic-beanstalk-via-ebs-configuration-7533ad28ac06

    【讨论】:

      【解决方案4】:

      以上任何选项都可能有效,也可能无效,

      ...但是如果您的 proxy.config 文件的行尾不正确,那么 AWS 在尝试将您的代码部署到实例时只会出错。

      我们创建了 .platform/nginx/conf.d/proxy.config 文件,但是因为我们是在 Windows 平台上开发和构建代码,所以行尾设置为 Windows (CRLF)。

      但我们的 AWS 实例都是 Linux 的,预计会以 Unix (LF) 结尾。

      所以当 Linux 试图读取文件时它只是失败了......它甚至没有在事件或日志中给我们一个像样的错误,它只是说失败了。

      也许最后一件事是检查是否没有其他工作:)

      【讨论】:

        【解决方案5】:

        即使在这里尝试了所有解决方案,也遇到了很多麻烦。我收到错误消息:eb-engine.log 中的未知指令“client_max_body_size”

        这个页面帮我解决问题:https://forums.aws.amazon.com/thread.jspa?threadID=334637

        Visual Studio 以导致问题的某种编码创建文件,我可以将文件保存/转换为 ANSI 编码,它按预期工作。

        希望这可以帮助遇到同样问题的人。

        【讨论】:

          【解决方案6】:

          迟到,但对于 .NET Core,以下解决方案有效:

          在 /.platform/nginx/conf.d/proxy.conf 中创建一个文件,内容如下:

          client_max_body_size 100M;
          

          确保在 Visual Studio 的属性中将此文件的“复制到输出目录”设置为“始终”,并且构建操作为“内容”。

          【讨论】:

            【解决方案7】:

            您可以采取两种方法。不幸的是,有些适用于某些 EB 应用程序类型,有些适用于其他类型。

            AWS 文档中支持/推荐

            对于某些应用程序类型,例如Java SEGoNode.js,可能还有 Ruby(没有针对 Ruby 的文档,但所有其他 Nginx 平台似乎都支持这一点),Elasticbeanstalk 具有内置的理解关于如何配置 Nginx。

            要扩展 Elastic Beanstalk 的默认 nginx 配置,将 .conf 配置文件添加到应用程序源包中名为 .ebextensions/nginx/conf.d/ 的文件夹。 Elastic Beanstalk 的 nginx 配置自动在此文件夹中包含 .conf 文件。

            ~/workspace/my-app/
            
            |-- .ebextensions
            |   `-- nginx
            |       `-- conf.d
            |           `-- myconf.conf
            `-- web.jar
            

            Configuring the Reverse Proxy - Java SE

            要特别增加最大上传大小,然后在.ebextensions/nginx/conf.d/proxy.conf 创建一个文件,将最大正文大小设置为您喜欢的任何大小:

            client_max_body_size 50M;
            

            直接创建 Nginx 配置文件

            对于其他一些应用程序类型,经过大量研究并与出色的 AWS 支持团队合作数小时后,我在 .ebextensions 内创建了一个配置文件来补充 nginx 配置。此更改允许更大的帖子正文大小。

            .ebextensions 目录中,我创建了一个名为01_files.config 的文件,其内容如下:

            files:
                "/etc/nginx/conf.d/proxy.conf" :
                    mode: "000755"
                    owner: root
                    group: root
                    content: |
                       client_max_body_size 20M;
            

            这会在 /etc/nginx/conf.d 目录中生成一个 proxy.conf 文件。 proxy.conf 文件只包含一个行 client_max_body_size 20M; 就可以了。

            请注意,对于某些平台,此文件将在部署期间创建,但在稍后的部署阶段删除。

            您可以指定 Nginx 文档中概述的其他指令。

            http://wiki.nginx.org/Configuration

            希望这对其他人有所帮助!

            【讨论】:

            • 文件格式记录在docs.aws.amazon.com/elasticbeanstalk/latest/dg/…。进度记录在 /var/log/cfn-init.log 中。在日志中,您应该会看到类似 2014-xx-xx xx:xx:xx,xxx [DEBUG] Writing content to /etc/nginx/conf.d/proxy.conf 的内容。我不确定,但似乎可能需要重新启动服务器。
            • 和 puma 一起为我工作。不得不像@Will 说的那样重启服务(sudo service nginx reload)。
            • 对于节点 js,第二种方法(文件:)对我有用。第一个没有工作。甚至 AWS 支持都建议对节点 js 使用第二种方法 docs.aws.amazon.com/elasticbeanstalk/latest/dg/…
            • 我刚刚测试了 ElasticBeanstalk + Java8 环境的两个选项,第一个对我有用。第二个没有。希望对您有所帮助!。
            • 对于任何寻找的人,Elastic Beanstalk Amazon Linux 2/3.3.1 上 Python 的正确 Nginx conf 路径是 .platform/nginx/conf.d/proxy.conf
            【解决方案8】:

            对于那些在这里磕磕绊绊的人:

            我跟着Jijo Cleetus回答但没用,但绝对指向了正确的方向。

            但我在解释为​​什么,因为如果我看到nginx.conf 文件,它确实包含include conf.d/*.conf,所以它应该包含代理文件,因为提到了the 答案。

            另外,默认服务器监听 80 并标记为default_server,有include conf.d/elasticbeanstalk/*.conf

            但是this answer 确实解决了这个问题,主要是.conf 文件目录必须是.platform/nginx/conf.d/elasticbeanstalk 而不是.platform/nginx/conf.d/

            所以:

            .platform/nginx/conf.d/elasticbeanstalk/01-request-body.conf .platform/nginx/conf.d/elasticbeanstalk/02-timeouts.conf

            是一些例子

            我还通过登录 ec2 实例并运行 nginx -T 来确认它,它会打印正在运行的配置以验证是否包含我的自定义配置。

            我还看到,默认的应用程序代理配置被命名为00_application.conf,而 nginx 包含按字母顺序排列的文件,所以用前缀数字命名。

            为通过 CodePipeline 部署的人员添加了注释: 确保将.platform/**/* 包含在buildspec.yaml -> artifacts 部分

            【讨论】:

            • 谢谢,这让我可以替换 Elastic Beanstalk 用于 ASP.NET Core Web 应用程序的 Nginx 转发代理的库存 00_application.conf。我还必须将该文件添加到 Visual Studio 中的 ASP.NET Core 项目中,否则它不会发布(确保您看到它包含在 bin/Release 文件夹中以及上传到 S3 的已部署 zip 中)。
            • 我正在使用代码管道进行部署,您为 .platform 添加工件的出色指导解决了这个问题。
            【解决方案9】:

            使用 Amazon Linux 2 时(不考虑平台)

            当您通过 Amazon Linux AMI 使用较旧的 Elastic Beanstalk 环境时,accepted answer 是正确的。较新的 Elastic Beanstalk 环境使用 Amazon Linux 2 AMI。

            使用 Amazon Linux 2 时,您需要在 .platform/ 目录而不是 .ebextensions/ 中指定自定义 Nginx 配置。

            这意味着您需要创建文件.platform/nginx/conf.d/proxy.conf,其内容为client_max_body_size 50M;

            another answer 中也提到了.platform/ 目录,但这仍然需要重新加载 Ngix 配置,不再需要重新加载 Amazon Linux 2。

            您可以在Extending Elastic Beanstalk Linux platforms 文档中找到更多关于此的选项。

            【讨论】:

            • 为 Amazon Linux 2 和 Node.js 工作!
            • 记得在源包中包含 .platform/* 以及其他源文件。
            • @Kieran 的重要收获,在我使用 Java Spring Boot 的示例中,我必须在同一级别上创建 jar 的 zip 和 .platform/* 文件夹
            • @JanDintel 另一个.platform 答案,您在重新加载 Nginx 配置时有点不一致。所以最后不需要重新加载配置,而是由 AWS 完成?
            • @AleksandarT 使用此方法时不再需要添加后挂钩来重新加载 Nginx 配置
            【解决方案10】:

            直接在 .ebextensions 中创建文件是唯一对我有用的方法I found。创建一个名为 01_files.config 的新文件并粘贴以下内容:

            files:
            "/etc/nginx/conf.d/proxy.conf" :
                mode: "000755"
                owner: root
                group: root
                content: |
                   client_max_body_size 20M;
            

            这将在部署时为您创建一个配置文件,将 client_max_body_size 设置为 20MB(更改 # 以满足您的需要)。

            【讨论】:

              【解决方案11】:

              除了 client_max_body_size,我还必须添加 client_body_buffer_size。这是 2 MB 附件的有效点配置文件:

              文件:“/etc/nginx/conf.d/proxy.conf”:
              模式:“000755”
              所有者:root
              组:根
              内容:|
              代理缓冲开启;
              proxy_buffer_size 128k;
              proxy_buffers 8 256k;
              client_body_buffer_size 2M;
              proxy_busy_buffers_size 256k;
              fastcgi_buffers 16 16k;
              fastcgi_buffer_size 32k;
              client_max_body_size 3M;

              【讨论】:

                【解决方案12】:

                我已经尝试了所有 .ebextensions 添加实施级别配置的方法,但它在最新的 Amazon Linux AMI 中对我没有帮助。我做了很多研究,在查看日志后,我发现部署任务运行程序每次都在检查一个名为.platform 的文件夹,我想像.ebextensions 一样添加一个。以下是我在项目根文件夹中所做的设置。

                在项目文件夹的根级别添加以下文件夹设置。

                文件夹结构 (.platform/nginx/conf.d/proxy.conf)

                .platform/
                         nginx/
                              conf.d/
                                    proxy.conf
                         00_myconf.config
                

                文件 1 的内容 - proxy.conf(在 .platform/nginx/conf.d/ 文件夹内)

                client_max_body_size 50M;
                

                文件 2 的内容 - 00_myconf.config(在 .platform/ 文件夹内)

                container_commands:
                  01_reload_nginx:
                    command: "service nginx reload"
                

                小心扩展。第一个文件是 .conf,第二个文件是 .config

                现在将您的项目重新部署到 Amazon Elastic Beanstalk,您将看到神奇之处。此配置将添加到您的所有 EC2 实例中,作为 Auto Scaling 的一部分创建。

                详细的文件夹结构如下。

                【讨论】:

                • 男人!!!!!!!!!太感谢了。这是在 AWS EB Amazon linux 中设置 nginx 配置的唯一方法。我浪费了一整天的时间尝试所有可用的解决方案!!!我无法表达如何感谢您花时间详细写下这个答案。祝福你。如果您有某种 patreon 或 buymeacoffee 帐户,我会做出贡献。 @jijo Cleetus
                • 非常感谢。我也使用.ebextensions 尝试了所有可能的方法,但只有这种方法有效。
                • 为我节省了大量的试验和失败,使其能够正常工作。感激不尽!
                • 有没有人在 AWS 文档中找到对此的任何引用?
                • 干得好。这由 AWS 记录,但非常糟糕。 docs.aws.amazon.com/elasticbeanstalk/latest/dg/…。请参阅反向代理配置部分。 “所有 Amazon Linux 2 平台版本都使用 nginx 作为其默认反向代理服务器......要扩展 Elastic Beanstalk 默认 nginx 配置,请将 .conf 配置文件添加到应用程序源中名为 .platform/nginx/conf.d/ 的文件夹中捆绑”
                【解决方案13】:

                如果你在运行 EC2 并自己安装了 nginx,你最好的解决方案是在

                中创建一个新文件
                /etc/nginx/conf.d
                

                文件夹:

                sudo nano /etc/nginx/conf.d/proxy.conf
                

                然后在此处添加以下行:

                client_max_body_size 20M;
                

                然后保存重启nginx:

                sudo systemctl restart nginx
                

                【讨论】:

                • 这是一种解决方法,但如果 Elastic Beanstalk 创建一个新实例,您需要在每个实例中提供此配置。这实际上是不可能的,因为我们需要不断监控 EC2 实例,并且每次 nginx 重启过程都不是很好
                【解决方案14】:

                经过 3 天漫长的尝试来解决这个问题后,我与出色的 AWS 支持团队打了电话,他们给了我一些关于如何解决它的线索。 首先,我的项目是 JAVA,我使用 maven 和 spring boot 通过 Elastic Beanstalk (EBS) 运行它。

                1. 正如AWS' documentation 中所述,您需要将自定义 nginx 设置存储在项目的根目录中。 为此,我创建了一个 client_max_body_size.conf 文件并将其放在以下路径中: 我的项目名称/src/main/resources/ebextensions/nginx/conf.d/client_max_body_size.conf 该文件仅包含以下行:

                  client_max_body_size 10M;
                  
                2. 配置 maven 以在构建期间将此文件添加到我的项目的根文件夹中。 这有点棘手,我需要在我的 POM.xml 中添加以下配置(source):

                  <plugin>
                  <artifactId>maven-resources-plugin</artifactId>
                  <version>3.1.0</version>
                  <executions>
                      <execution>
                          <id>copy-resources</id>
                          <!-- here the phase you need -->
                          <phase>validate</phase>
                          <goals>
                              <goal>copy-resources</goal>
                          </goals>
                          <configuration>
                              <outputDirectory>${basedir}/target/.ebextensions</outputDirectory>
                              <resources>
                                  <resource>
                                      <directory>src/main/resources/ebextensions</directory>
                                      <filtering>true</filtering>
                                  </resource>
                              </resources>
                          </configuration>
                      </execution>
                  </executions>
                  

                3. 您现在已经可以在本地构建您的项目并运行以下 SSH 命令来验证它实际上是否位于您的项目的根目录中:

                  jar tf main-1.0-SNAPSHOT.jar | grep .ebextensions
                  
                4. 现在是棘手的部分。当您将其上传到 EBS 时,您的文件应仅包含 SNAPSHOT.jar 文件和 .ebextensions 文件夹。例如,如果现在您将 jar 文件和文件夹压缩并手动上传,它将起作用!

                5. 由于我使用 Jenkins 进行部署,特别是 AWS EBS Deployment Plugin - 您需要更改部署中包含的文件/文件夹的设置。 现在由于某种原因,我无法包含 .ebextensions 文件夹,所以我只是排除了除该文件夹和 .jar 文件之外的所有其他内容。

                这行得通!

                【讨论】:

                  【解决方案15】:

                  这是AWS provided solution,它可以工作(根据您的需要调整大小)

                  files:
                    "/opt/elasticbeanstalk/hooks/appdeploy/enact/12_add_nginx_configuration.sh":
                      mode: "000755"
                      owner: root
                      group: root
                      content: |
                        #!/usr/bin/env bash
                        /bin/echo "client_max_body_size 50M;" > /etc/nginx/conf.d/proxy.conf
                        /sbin/service nginx reload
                  

                  【讨论】:

                    【解决方案16】:

                    我在同样的问题上苦苦挣扎,但无法解决它,终于可以正常工作了。

                    这是我的配置文件,

                    files:
                      "/etc/nginx/conf.d/01_proxy.conf":
                        mode: "000755"
                        owner: root
                        group: root
                        content: |
                          client_max_body_size 50M;
                          client_body_buffer_size 16k;
                    
                    container_commands:
                      01_reload_nginx:
                        command: "sudo service nginx reload"
                    

                    问题是,

                    我正在为代码管道使用 python 脚本,其中不包括 创建构建时的 .ebextensions 文件夹。

                    这是我的几分钱,

                    1. 确保您的 .ebextensions 文件夹包含在构建的 zip 文件夹中,该文件夹位于您的 aws 帐户的 s3bucket 中
                    2. 确保它不在 .gitignore 文件中
                    3. 如果您使用脚本生成构建,请确保它 包括 .ebextensions

                    【讨论】:

                      【解决方案17】:

                      唯一对我有用的是在 .ebextensions 中创建一个“.config”文件,如下所示:

                      .ebextensions/
                                 proxy.config
                      

                      .config 文件中只有此内容:

                      files:
                        "/etc/nginx/conf.d/proxy.conf":
                           content: |
                             client_max_body_size 50M;
                      

                      不需要子文件夹,不需要重新启动应用程序服务器,注意 .ebextensions 中的“.config”而不是“.conf”文件,并使用适当的缩进来避免 aws 控制台中的错误其余部分都是一样的,文件名没关系,

                      感谢: http://kroltech.com/2014/09/14/quick-tip-increase-upload-size-in-aws-elastic-beanstalk-node-js-env/

                      【讨论】:

                        【解决方案18】:
                        files:
                            "/etc/nginx/conf.d/proxy.conf" :
                                mode: "000755"
                                owner: root
                                group: root
                                content: |
                                   client_max_body_size 20M;
                        

                        为了安全起见修改了上述答案(语法错误,请参阅 YAML 中的两个“所有者:”条目),伙计们,请不要在任何东西上设置 777 权限。除非你喜欢被黑,否则将 Nginx 配置文件的所有者设置为 root。

                        另请参阅below answer 以使 nginx 在部署后拾取此更改。

                        【讨论】:

                          【解决方案19】:

                          接受的答案对我不起作用,因为我有一个基于 JVM 的应用程序,它似乎以不同的方式进行 NGINX 配置。我会看到在部署期间创建了一个 proxy.conf 文件,但后来在部署完成之前被删除。 AWS 文档解释了如何configure the proxy

                          创建一个仅包含以下行的 .ebextensions/nginx/conf.d/proxy.conf 文件:client_max_body_size 40M;

                          【讨论】:

                          • 不幸的是,这对我不起作用(单容器 Docker ELB)——即使在实例重启后也是如此。通过SSH登录实例,/etc/nginx/conf.d/中没有创建proxy.conf文件
                          • 我假设这是因为您使用的是 Docker ELB 并且它以不同的方式执行 nginx conf。我的答案是 Java 预设的 ELB。
                          • 我正在使用 elb 和 java 应用程序。为我工作!谢谢!
                          • 你怎么能看到正在创建的 proxy.conf 文件,只是注意到它的临时存在?
                          • 这适用于 Amazon Linux 1(仅限旧实例),对于 Amazon Linux 2,请将 ebextensions 更改为 .platform
                          【解决方案20】:

                          适用于 Java 平台

                          要创建 NGINX 配置代理文件,您只需添加

                          .ebextension/nginx/conf.d/proxy.conf文件

                          其中包含client_max_body_size 20M; 的内容。

                          “proxy.conf”将部署到“/etc/nginx/conf.d/proxy.conf”并自动包含在NGINX配置中。

                          【讨论】:

                            【解决方案21】:

                            接受的答案对我不起作用,所以我用自己的替代了 nginx 配置。

                            我在.ebextensions/nginx/目录下创建了一个名为nginx.conf的文件

                            我通过 SSH 连接到我的 Beanstalk 应用程序的一个正在运行的实例,并复制了 nginx.conf 文件的内容,使用 cat /etc/nginx/nginx.conf 并从终端复制。

                            我将内容粘贴到我之前在.ebextensions/nginx/ 中创建的nginx.conf 文件中,并修改了http 指令以包含client_max_body_size 50M;。我终于使用eb deploy 重新部署了我的应用程序,并且成功了。您应该在部署期间收到以下消息:

                            信息:在“.ebextensions/nginx”中检测到 Nginx 配置 目录。 AWS Elastic Beanstalk 将不再管理 Nginx 此环境的配置。

                            这些是我的.ebextensions/nginx/nginx.conf 文件的内容:

                            # Elastic Beanstalk Nginx Configuration File
                            
                            user                    nginx;
                            error_log               /var/log/nginx/error.log warn;
                            pid                     /var/run/nginx.pid;
                            worker_processes        auto;
                            worker_rlimit_nofile    33193;
                            
                            events {
                                worker_connections  1024;
                            }
                            
                            http {
                                include       /etc/nginx/mime.types;
                                default_type  application/octet-stream;
                            
                                log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                                                  '$status $body_bytes_sent "$http_referer" '
                                                  '"$http_user_agent" "$http_x_forwarded_for"';
                            
                                include       conf.d/*.conf;
                            
                                map $http_upgrade $connection_upgrade {
                                    default     "upgrade";
                                }
                            
                                server {
                                    listen        80 default_server;
                                    access_log    /var/log/nginx/access.log main;
                            
                                    client_header_timeout 60;
                                    client_body_timeout   60;
                                    keepalive_timeout     60;
                                    gzip                  off;
                                    gzip_comp_level       4;
                                    gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
                            
                                    # Include the Elastic Beanstalk generated locations
                                    include conf.d/elasticbeanstalk/*.conf;
                                }
                            
                                client_max_body_size 50M;
                            }
                            

                            我不必重新启动 nginx 服务或环境。

                            注意:确保您的 .ebextensions 是在部署期间创建并上传到 Beanstalk 的 .zip 文件的一部分(如果您正在使用它,.gitignore.ebignore 不会忽略它) .

                            【讨论】:

                            • 谢谢!我想知道您使用的是哪个平台?出于某种原因,Beanstalk 没有检测到我的 `.ebextensions/nginx/nginx.conf` 文件,即使它位于 zip 文件和 git repo 中。
                            • 支持注释。我忽略了 .ebextensions 导致被接受和流行的答案失败。我没有尝试您提到的所有其他方法,但感谢您的注意?
                            • 能否用于在 64 位 Amazon Linux 上运行的 Node.js?
                            【解决方案22】:

                            对于没有 Docker 的 Golang,我遵循了 aws doc 中的这些说明:

                            配置反向代理

                            如果您想在 nginx.conf http 块中包含指令之外的指令,您还可以在源包的 .ebextensions/nginx/conf.d/ 目录中提供其他配置文件。此目录中的所有文件都必须具有 .conf 扩展名。 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/go-environment.html#go-complex-apps

                            我在项目根目录的.ebextensions/nginx/conf.d/ 中创建了文件proxy.conf,里面只有一行:

                            client_max_body_size 20M;
                            

                            如果仍然无法正常工作,请确保 .ebextensions 文件夹和子文件夹包含在您的部署 zip 中。无需手动重启 Nginx。

                            【讨论】:

                            • 这对我运行带有 Amazon Linux 实例(版本 1)的 Java 8 应用程序很有用
                            【解决方案23】:

                            从接受的答案开始,您可能需要重新加载 nginx 配置文件。

                            为此添加以下命令

                               container_commands:
                                  01_reload_nginx:
                                    command: "service nginx reload"
                            

                            这比 ssh 进入您的 eb 实例并使用命令手动执行要好。

                            这与接受的答案相结合为我解决了同样的问题。 (Rails、Puma、NGINX)

                            【讨论】:

                              【解决方案24】:

                              或者,您可以将代理服务器更改为 Apache。 为此,请转到配置并编辑软件配置。这里的第一个选项是“代理服务器”,选择“apache”。

                              【讨论】:

                              • Apache 有自己的 LimitRequestBody 指令来设置上传文件的最大大小。
                              • @TomHarvey 如果可以,您能否提供一个完整的用例LimitRequestBody
                              【解决方案25】:

                              编辑:使用 Nick Parsons 接受的答案中的说明部署构建后,您可能需要重新启动 nginx 服务器以获取更改。

                              为此,ssh 到实例并执行

                              sudo service nginx reload

                              要了解有关重新加载的更多信息,请参阅http://nginx.org/en/docs/beginners_guide.html

                              在以前版本的 Elastic Beanstalk 中,我能够添加一个 container_command 来完成此操作,但现在我发现,就像 @cdmckay 一样,这会导致部署失败。如果您重建您的环境,它将获取 client_max_body_size 设置以及该指令在您的配置文件中。

                              【讨论】:

                              • 这有必要吗?不加这个怎么重启?
                              • 根据我的经验,我发现这是必要的。
                              • @cdmckay 能否详细介绍一下 reload 命令导致的实例问题?
                              • 我没有仔细研究它,但它基本上阻止了我的服务器启动,直到我删除它。似乎没有必要。
                              • 根据我的经验,我发现这是必要的,但是,在尝试为新实例重新启动 nginx 之前,我必须添加一个检查以查看它是否正在运行 - 'pgrep nginx && service nginx reload ||真的'
                              猜你喜欢
                              • 2021-03-16
                              • 2020-08-12
                              • 2018-10-27
                              • 2020-11-05
                              • 2015-01-30
                              • 2021-06-27
                              • 2021-06-03
                              • 2020-08-27
                              • 2017-04-01
                              相关资源
                              最近更新 更多