aws弹性beantalk上的nginx扩展
Posted
技术标签:
【中文标题】aws弹性beantalk上的nginx扩展【英文标题】:nginx extensions on aws elastic beanstalk 【发布时间】:2015-05-22 00:12:20 【问题描述】:我想在弹性 beanstalk 应用程序上使用 this nginx extension 之类的东西 - 但是如何在弹性 beanstalk 上添加/配置 nginx
【问题讨论】:
【参考方案1】:不久前我做了一个项目,在 Elastic Beanstalk 上进行动态图像大小调整。我选择在 Node.js 应用程序中使用 Sharp NPM package 来获得 libvips 的速度和灵活性。最终它成功了,但在 Beanstalk 上这样做绝对是一场艰苦的战斗。
我们遇到的第一个问题是在系统上安装库。我们需要 imagemagick 和 libvips。 .ebextensions
中的脚本设置工作正常,但您无法控制何时这些脚本相对于您的应用程序运行。在我们的例子中,我们需要在运行 npm install
之前安装这些库。这不是 Beanstalk 的工作方式,所以我们必须在 package.json
中使用 devDependencies
做一些非常老套的东西,然后在 .ebextensions
脚本的末尾自行安装它们。对你来说,我想这是你将如何在内置 Nginx 实例上安装任何东西的第一部分。但是,您必须先停止 Nginx,因为它可能已经在运行。
接下来,Beanstalk 喜欢清除您拥有的任何 Nginx 配置。更具体地说,它会尝试将您的 Nginx 配置与亚马逊想要的内容合并。我怀疑这是真正会咬你的部分。在尝试添加一些缓存扩展时,我们最终放弃了这一点。它从来没有奏效,即使我们在适当的地方破解了一些东西,一旦亚马逊后来改变了一些东西,它也很可能会失败。您可以使用 .ebextensions
脚本来放置 Nginx 配置,但是一旦它们完成,亚马逊就会有一些脚本可以重写配置。
我的意思是你可以破解它来工作,但这不是你想做的事情。 Elastic Beanstalk 对于它的构建目的来说是可以的,基本上没有别的。它也不像宣传的那样工作,而且不是一个灵活的系统。它似乎是与盒子上的一堆脚本拼凑在一起的,这些脚本在按预期使用时可以发挥作用,但是弄乱它们并不是一个好主意,因为亚马逊可以随时更改它们的运行方式。
您的一种可能性是使用 Docker。如果我要重新做这个项目,我会从一开始就使用 Docker,因为理论上你可以使用任何你想要的东西。 Beanstalk 可以托管您的 Docker 应用程序,它的工作方式与普通 Beanstalk 应用程序不同。
祝这个项目好运!
【讨论】:
【参考方案2】:原来 Elastic Beanstalk 上的 nginx 是使用 http_image_filter 编译的。 所以它基本上是将 nginx 配置放入 beanstalk 自己的 nginx 配置的情况。是的@brad - 这有点软糖。不过还不错..
你可以看到我的解决方案here。基本上它是一个我从this solution修改的python脚本。
【讨论】:
以上是关于aws弹性beantalk上的nginx扩展的主要内容,如果未能解决你的问题,请参考以下文章
aws弹性beantalk上的HTTP到HTTPS不适用于Spring Boot
.Net 5 AWS nginx Linux弹性beantalk改变client_max_body_size