Elastic beanstalk重置.config文件

时间:2017-04-27 07:26:24

标签: ruby-on-rails nginx amazon-ec2 elastic-beanstalk

我在弹性beanstalk上运行的rails应用程序上有一个ruby,我想上传一些大文件 - 可能大约5GB。 为此,我在.ebextensios / nginx / 01_upload_file_size.config上添加了一个配置文件,其中包含以下内容:

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

将代码部署到EB后,我使用命令sudo service nginx reload重新启动nginx服务器。这似乎有一段时间了。

第二天上传大文件会让我'重置连接'错误。日志文件log/nginx/error.logs告诉我错误客户端意图发送太大的正文:24084848字节

我不知道为什么会这样。似乎配置文件在短期后被忽略或者可能被重置但我在文档中看不到这种情况的任何参考。请注意,当我再次SSH到eb环境并重新启动nginx时,我可以毫无问题地上传大文件。

在照顾好一切之后,我在EB控制台上看到了这些事件。

在您的环境中添加了实例[i-076127f714faac566]。

从您的环境中删除了实例[i-0c51791325b54873c]。

我还注意到配置重置时主机的IP地址会发生变化。

我认为当实例被自动添加到EB并从EB中删除时,它不会应用配置文件或者没有重启nginx服务器,就像我通过SSH手动完成的那样。

所以问题是:如何确保client_max_body_type始终设置为20G,即使在删除并重新添加实例后也是如此?或者,如何使配置持久化,以便我不必手动重启nginx服务器?

1 个答案:

答案 0 :(得分:1)

我认为你有两个问题 - 为什么EB取代你的实例,你怎么能自动重启nginx。

回答第一个问题将需要您进行一些研究,但我怀疑它可能是默认的CloudWatch警报,当网络流量低于某个阈值时会杀死实例。

第二个问题应该相当简单;在documentation之后,您应该能够在01_upload_file_size.config添加一个在部署过程中自动重启nginx的部分:

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

我还会检查以确保实际创建/etc/nginx/conf.d/proxy.conf文件 - 我不知道.ebextensions下的文件夹是否受支持。您可能需要将配置文件移至.ebextensions/01_upload_file_size.config