Elastic Beanstalk Nginx服务静态文件

时间:2017-12-05 05:41:21

标签: node.js amazon-web-services nginx amazon-ec2 elastic-beanstalk

我是Elastic Beanstalk的新手,试图为Node.js Express应用程序提供服务,并利用Nginx分别提供静态文件。我所遇到的任何教程都没有明确说明如何定义虚拟路径。

我试图通过浏览器中的AWS控制台执行此操作。我正在尝试为静态文件添加虚拟路径/目录设置。在控制台中,我是在 Elastic Beanstalk > myapp > configuration > Static Files

enter image description here

但无论我在这里添加什么,我都会收到以下错误消息: {{3}}

我还尝试添加完整的目录路径(/var/app/current/dist/public/images/)。我需要添加另一个.ebextensions/*.conf文件吗?我没有很多Nginx的经验,所以如果修复程序是.conf文件,我就不知道它是什么

2 个答案:

答案 0 :(得分:10)

这是一个已知的错误,它们只在Web控制台上支持python。如果您的应用程序位于nodejs中,则需要从cli中设置这些属性。

您可以通过这种方式设置cli的值

aws elasticbeanstalk update-environment --environment-id your_enviornment_id --option-settings 'Namespace=aws:elasticbeanstalk:container:nodejs:staticfiles,OptionName=/assets,Value=/static/assets'

或从eb config编辑配置文件。

答案 1 :(得分:0)

Kashif Zaidi的答案很好用,但是如果要在多个部署中保持设置一致,则可以在项目根目录中创建一个.ebextensions目录,并使用诸如01_environment_settings.config这样的文件来指定该设置,例如所以:

option_settings:
  aws:elasticbeanstalk:container:nodejs:staticfiles:
    "/assets": "/static/assets"

您可以指定多个静态文件设置,例如:

option_settings:
  aws:elasticbeanstalk:container:nodejs:staticfiles:
    "/app/": "frontend_build/"
    "/static/": "frontend_build/static/"
    "/backend_static": "static/"