aws弹性beanstalk上的nginx扩展

时间:2015-03-19 00:22:55

标签: amazon-web-services nginx elastic-beanstalk

我想在弹性beanstalk应用程序上使用类似this nginx extension的东西 - 但是如何在弹性beanstalk上添加/配置nginx

2 个答案:

答案 0 :(得分:1)

我做了一段时间的项目,在Elastic Beanstalk上进行了动态图像调整。我选择在Node.js应用程序中使用Sharp NPM package来获得libvips的速度和灵活性。它最终得到了解决,但在Beanstalk上做这件事绝对是一场艰苦的战斗。

我们遇到的第一个问题是在系统上安装库。我们需要imagemagick和libvips。 .ebextensions中的脚本设置工作正常,但当这些脚本与您的应用程序相关时,您无法控制。在我们的例子中,我们需要在npm install运行之前安装库。这不是Beanstalk的工作原理,所以我们必须在devDependencies中使用package.json做一些非常hacky的东西,然后在.ebextensions脚本的末尾自己安装它们。对于你,我想这是你将如何在内置的Nginx实例上安装任何内容的第一部分。但是,你必须首先停止Nginx,因为它可能已经在运行。

接下来,Beanstalk喜欢吹走你拥有的任何Nginx配置。更具体地说,它试图将你的Nginx配置与亚马逊想要的东西合并。我怀疑这是真正咬你的部分。在尝试添加一些缓存扩展时,我们最终放弃了这一点。它从来没有奏效,即使我们已经破解了某些东西,一旦亚马逊稍后改变了某些东西,它很可能会失败。您可以使用.ebextensions脚本放置Nginx配置,但是一旦完成,Amazon就会有一些脚本无论如何都会重写配置。

我所得到的是你可能能够破解它的工作,但这不是你想要做的事情。 Elastic Beanstalk对于它的构建是可以的,基本上没有别的。它也不像宣传的那样有效,并且不是一个灵活的系统。它似乎与盒子上的一堆脚本拼凑在一起,按照预期使用它们,但是弄乱它们并不是一个好主意,因为亚马逊可以随时改变它们的运行方式。

您的一种可能性是使用Docker。如果我再次进行该项目,我会从一开始就使用Docker,理论上你可以使用你想要的任何东西。 Beanstalk可以托管您的Docker应用程序,它的工作方式与普通的Beanstalk应用程序不同。

祝这个项目好运!

答案 1 :(得分:1)

事实证明,Elastic Beanstalk上的nginx是使用http_image_filter编译的。 所以它基本上是将nginx配置转换为beanstalk自己的nginx配置的情况。是的@brad - 这有点软糖。但它还不错......

您可以看到我的解决方案here。基本上它是我从this solution修改过的python脚本。