2017-04-27 74 views
0

我在rails应用程序上运行弹性beanstalk上有一个红宝石,我想上传一些大文件 - 可能大约5GB。 要做到这一点,我就.ebextensios增加一个配置文件/ nginx的/ 01_upload_file_size.config具有以下内容:Elastic beanstalk重置.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字节

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


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

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

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

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

我认为,当实例被自动添加并从EB中删除时,它不会应用配置文件,也不会像我通过SSH手动重新启动nginx服务器。

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

回答

0

我想你在这里有两个问题 - 为什么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

+0

感谢您的回答。我有一个自动扩展环境,所以根据服务器负载自动添加/删除实例。我在日志中找到了一些cloudwatch的痕迹,所以我会深入研究它。目前,我已经删除了自动缩放,并暂时避免了这个问题。 – Himsim

+0

很高兴听到它!有一个默认的自动缩放规则,如果其网络流量低于某个阈值(这在低流量站点上经常出现这种情况),将终止该实例。 – Brian