nginx.conf文件在Elasticbeanstalk EC2实例

时间:2017-05-23 06:55:20

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

我已在AWS Elasticbeanstalk上部署了我的Rails应用程序,该应用程序允许用户使用 在我的nginx.conf文件中上传视频,该文件位于EC2的etc / nginx目录中 实例我必须在服务器部分添加一行以避免错误"Nginx: 413 Request Entity Too Large Error"

  

client_max_body_size 999M;   然后服务nginx重新加载

但在上传10-15个视频后,此文件会重置,然后我必须再次添加 此行和EC2实例的IP也会发生变化,

有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

听起来您的实例正在终止并重建。你能检查一下"事件"您环境的页面,看看是否发生了这种情况?这应该是文件系统重置和IP地址发生变化的唯一原因。我怀疑正在触发自动缩放规则。

关于文件重置的原因,您是否注意到每次通过eb ssh连接时都会显示以下警告:

This EC2 instance is managed by AWS Elastic Beanstalk. Changes made via
SSH WILL BE LOST if the instance is replaced by auto-scaling.

至少在Ruby + Passenger平台上,EB从/opt/elasticbeanstalk/support/conf处的模板生成nginx配置文件 - 您应该看到名为nginx_config.erbnginx_config_healthd.erb的文件。

您可以使用EB扩展(在documentation中描述)在部署期间修改这些文件,这将确保您的更改通过自动扩展保留。您的扩展程序可能如下所示:

<强> .ebextensions / 01 - 编辑的nginx-conf.config

container_commands:
  01backup_nginx_config:
    command: "cp -n /opt/elasticbeanstalk/support/conf/nginx_config.erb /opt/elasticbeanstalk/support/conf/nginx_config.erb.original"
  02edit_nginx_config:
    command: "sh -c \"sed '/passenger_ruby/ i \
\             client_max_body_size 999M;' /opt/elasticbeanstalk/support/conf/nginx_config.erb.original > /opt/elasticbeanstalk/support/conf/nginx_config.erb\""