【问题标题】:Customizing Nginx Configuration in AWS Elastic Beanstalk在 AWS Elastic Beanstalk 中自定义 Nginx 配置
【发布时间】:2015-03-27 23:09:55
【问题描述】:

我正在 Ruby 2.0/Puma 实例上运行 rails 应用程序,并尝试自定义 nginx 配置。我需要增加允许的请求大小以允许文件上传。我发现其他一些帖子让我将其添加到我的 .ebextensions 中:

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

这确实按预期创建了文件,但在我手动重新启动 nginx 之前它似乎不起作用。因此,我试图找出一种使用 .ebextensions 命令重新启动 nginx 的方法,但没有任何成功。有谁知道使用 .ebextensions 重新启动 nginx 的方法或知道解决此问题的更好方法?

【问题讨论】:

    标签: ruby-on-rails amazon-web-services nginx amazon-elastic-beanstalk


    【解决方案1】:

    这是我的配置并为我工作。您必须将其包含在 http 块中。

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

    【讨论】:

    • 当我这样做时,我得到“nginx:[emerg] “http”指令在/etc/nginx/conf.d/proxy.conf:1 中是不允许的,当我手动尝试重新启动时nginx。也许我们在不同版本的 nginx 上。无论如何,我上面的配置对我来说很好,但只有在我 ssh 进入服务器并手动重新启动 nginx 之后。从根本上说,问题在于 nginx 在部署后没有接受新配置。
    【解决方案2】:

    我找到了一种在部署后重新启动 nginx 的方法,该方法使用了一种未记录的技术来运行部署后脚本。我将此添加到我的 .ebextensions 中:

    files:
      "/opt/elasticbeanstalk/hooks/appdeploy/post/03_restart_nginx.sh":
        mode: "000755"
        owner: root
        group: root
        content: |
          #!/usr/bin/env bash
          service nginx restart
    

    【讨论】:

      【解决方案3】:

      要重新加载 nginx 配置,您可以使用 container_commands

      来自http://www.infoq.com/news/2012/11/elastic-beanstalk-config-files

      container_commands 键允许您为容器执行命令。它们在应用程序和 Web 服务器设置完毕并提取应用程序之后运行,但在部署应用程序之前运行。 container_commands 按名称按字典顺序处理。

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

      【讨论】:

        【解决方案4】:

        我让它像这样工作。无需重启或重新加载 nginx,因为 commands(而不是 container_commands)在应用程序部署之前运行。

        commands: 
          01-get-nginx-conf-file:
            command: "aws s3 cp s3://somepath/nginx.conf /home/ec2-user"
          02-replace-default-nginx-config:
            command: "cp /home/ec2-user/nginx.conf /etc/nginx/nginx.conf"
        

        【讨论】:

          【解决方案5】:

          我在这里的回复可能有点晚,但我发现了另一种侵入性较小的方式来在 Elastic Beanstalk 上配置 nginx。 您可以通过创建.ebextensions/nginx/conf.d 目录直接为nginx 指定配置文件。在 EB 部署期间,在其中找到的任何配置文件都会自动复制到您的 /etc/nginx/conf.d/ 目录中。 这似乎是一个更强大的解决方案。

          此处提供的文档: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-nginx.html

          编辑:正如 cmets 中所指出的,Elastic Beanstalk 在平台之间的实现不一致。此处的文档适用于 Java SE,并且似乎该文档并不适用于所有平台。

          【讨论】:

          • 你是否也让它在 ruby​​ 环境中工作?文档似乎只在 Java 文档中显示。我无法让它在我的 Ruby/Puma 环境中工作,但我不确定我是否做错了什么。
          • ? 我昨晚在亚马逊开了一张支持票。他们确认他们不同的 beanstalk 平台在彼此之间的工作方式不同,并且 Ruby 平台还不支持爆炸的 nginx 目录。他们正在升级我的罚单,让我解释为什么不一致。
          • 哇哦,这太荒谬了!考虑到我在 EBS 工作的经历,我不能说我真的很惊讶。
          【解决方案6】:

          我在将 Docker 部署到 Elastic Beanstalk 时遇到了类似的情况。我能够在此处使用单个配置文件解决更改以及 nginx 重新加载:<app>/.ebextensions/increase_upload_size.config,包括以下代码:

          container_commands:
            01_reload_nginx:
              command: "sudo service nginx reload"
          
          files:
            "/etc/nginx/conf.d/proxy.conf" :
              mode: "000644"
              owner: root
              group: root
              content: |
                client_max_body_size 20M;
          

          更改是在我在 EB 中执行“上传和部署”时实现的。

          【讨论】:

            【解决方案7】:

            以下对我有用(我将 HTTP 负载增加到 100M - 如果您想增加到另一个大小,请进行调整):

            files:
              "/etc/nginx/conf.d/proxy.conf":
                mode: "000755"
                owner: root
                group: root
                content: |
                  client_max_body_size 100M;
              "/opt/elasticbeanstalk/hooks/appdeploy/post/03_restart_nginx.sh":
                mode: "000755"
                owner: root
                group: root
                content: |
                  #!/usr/bin/env bash
                  service nginx restart
            

            【讨论】:

              猜你喜欢
              • 2020-08-27
              • 2017-04-01
              • 2019-01-16
              • 2017-07-24
              • 2020-12-01
              • 2018-08-27
              • 2021-08-22
              • 2021-11-24
              • 2015-11-27
              相关资源
              最近更新 更多