Elastic Beanstalk:`.ebextensions`未被执行

问题描述 投票:0回答:2

我正在将PHP应用程序部署到Beanstalk,并且看起来一切都很好,但是我的.ebextensions配置文件似乎没有运行。

我只有一个配置文件,应该创建一个文件,然后重新加载nginx。/my-project/.ebextensions/nginx.config

files:
  "/etc/nginx/conf.d/elasticbeanstalk/extend-nginx.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
      add_header X-Frame-Options "SAMEORIGIN";
      add_header X-XSS-Protection "1; mode=block";
      add_header X-Content-Type-Options "nosniff";

      location / {
          try_files $uri $uri/ /index.php?$query_string;
      }

container_commands:
    reload_nginx:
        command: "sudo service nginx reload"

我的体系结构当前为:1. CodePipeline连接到GitHub,该GitHub在每次更新主服务器时将应用程序部署到CodeDeploy。2. CodeDeploy从CodePipeline接收部署。3. CodeDeploy将其安装到Elastic Beanstalk实例。

以上所有步骤均正常。我只是不明白为什么.ebextensions中的配置文件未按预期创建文件。

注意:通过手动下载其中一个修订并进行检查,我已经确认.ebextensions文件夹位于修订.zip的根目录中。

amazon-web-services nginx amazon-elastic-beanstalk aws-code-deploy aws-codepipeline
2个回答
0
投票

尝试不使用脚本将文件简单地放入.ebextensions/nginx/conf.d/elasticbeanstalk

至少这是Java SE平台的工作方式:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-nginx.html。我认为对于PHP来说这没什么不同。

同样也在您的EC2实例上检查日志文件(cfn-init.log,cfn-init-cmd.log等)的输出。


0
投票

我可以为您提供以下链接,该链接描述了在EB环境中配置nginx反向代理的官方方法:

[[1]配置代理服务器-https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/nodejs-platform-proxy.html

另一个选择是使用'sed'like命令来更新nginx配置,如下所示:

container_commands:
    enable_websockets:
        command: |
            sed -i '/\s*proxy_set_header\s*Connection/c \
                    proxy_set_header Upgrade $http_upgrade;\
                    proxy_set_header Connection "upgrade";\
            ' /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf
© www.soinside.com 2019 - 2024. All rights reserved.