Amazon Elastic Beanstalk ebextension 将 nginx 配置参数添加到默认配置中

Posted

技术标签:

【中文标题】Amazon Elastic Beanstalk ebextension 将 nginx 配置参数添加到默认配置中【英文标题】:Amazon Elastic Beanstalk ebextension adds nginx config parameter into default config 【发布时间】:2019-01-01 06:25:14 【问题描述】:

我正在使用一个 zip 文件部署我的应用程序,该文件包含我的应用程序 jar、docker 配置文件和一个 .ebextensions 文件夹,其中包含一个 nginx/conf.d/custom.config 文件。

在我的custom.config中,增加nginx上传文件大小限制只有一行:

client_max_body_size: 16M

但控制台显示:

错误处理文件(跳过):'.ebextensions/nginx/conf.d/custom.config' - 包含无效键:'client_max_body_size'。有关有效密钥的信息,请参阅http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html

我遵循的guide 扩展了默认的 nginx 设置。 引用:

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

我将.conf 更改为.config,因为第一个在部署期间甚至不会触发ELB 环境更新。

【问题讨论】:

【参考方案1】:

我认为 Elastic Beanstalk 正在尝试将 custom.config 处理为 EB 配置文件。尝试将custom.config 移动到.ebextensions/nginx/custom.conf(注意文件扩展名的变化)

【讨论】:

根据指南,如果我从conf.d 文件夹中移出我的配置文件,它将覆盖 nginx 配置而不是扩展默认配置。 在这种情况下,更改扩展名可能就足够了。如果可行,我可以更新我的答案。完成此操作后,我实际上已将他们的示例 nginx 配置包含在 .ebextensions/nginx 中,并添加了我的修改。【参考方案2】:

我设法通过添加 beanstalk 配置文件 .ebextensions/add_nginx_config.config 使其工作,该文件将我的 custom-nginx.conf 文件复制到 ec2 实例的 conf.d 文件夹。

add_nginx_config.config:

container_commands:
  copy:
    command: "cp nginx-custom.conf /etc/nginx/conf.d/"

所以我的应用资源包树看起来像这样:

app.zip
|-application.yml
|-app.jar
|-nginx-custom.conf
|-.ebextensions
  |-add_nginx_config.config

【讨论】:

【参考方案3】:

我已经尝试了所有添加实施级别配置的 .ebextensions 方法,但它在最新的 Amazon Linux AMI 中对我没有帮助。对于最新的 Amazon Linux AMI,您需要遵循此结构来增加上传大小。您需要遵循此结构来增加上传大小限制。

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

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

.platform/
         nginx/
              conf.d/
                    proxy.conf

将此行添加到proxy.conf(在.platform/nginx/conf.d/文件夹内)

client_max_body_size 50M;

提交此文件并使用eb deploy再次部署。

【讨论】:

以上是关于Amazon Elastic Beanstalk ebextension 将 nginx 配置参数添加到默认配置中的主要内容,如果未能解决你的问题,请参考以下文章

在 Amazon Elastic Beanstalk 上安装 Anaconda

Amazon Elastic Beanstalk 腻子

Amazon Elastic Beanstalk 如何采用自定义 python 命令?

如何卸载 Amazon Elastic Beanstalk 命令行界面?

Elastic Beanstalk 是不是支持 Amazon 的 Aurora DB?

使用 RabbitMQ 的 Amazon Elastic Beanstalk 上的芹菜超时异常