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 如何采用自定义 python 命令?
如何卸载 Amazon Elastic Beanstalk 命令行界面?