WAR中忽略了Elastic Beanstalk .ebextensions

Tom*_*Tom 4 java nginx amazon-ec2 amazon-web-services spring-boot

我正在尝试更改client_max_body_size我的Elastic Beanstalk NGINX反向代理的属性,以允许上传更大的JPEG文件.因此,我将文件夹".ebextensions"添加到我的WAR文件的根目录(WAR文件还包括一个Spring Boot应用程序),并添加了一个文件".ebextensions/01_files.config",其中包含以下内容:

files:
  "/etc/nginx/conf.d/proxy.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
        client_max_body_size 20M;
Run Code Online (Sandbox Code Playgroud)

我通过Travis-CI将WAR文件部署到Elastic Beanstalk.但是,Elastic Beanstalk似乎忽略了该文件,因为上传文件大小(例如2MB)不起作用,并且在用SSH连接到实例并查找"/etc/nginx/conf.d/proxy.conf"文件时不存在.

我已经使用YAML验证器成功验证了上述内容.我知道,存在很多相关的问题,但不是那些似乎解决了我的问题.我还检查了根目录中的WAR文件中是否包含".ebextensions/01_files.config".当我检查"/ tmp/eb_extracted_jar"时,文件".ebextensions/01_files.config"也存在正确的内容.我甚至找不到"/var/log/cfn-init.log"中的任何错误.我注意到,在几秒钟内,文件"proxy.conf"在部署期间出现在"/etc/nginx/conf.d/"中,但之后它已被删除.

由于通过Travis-CI部署到Elastic Beanstalk,是否会出现此问题?还是我错过了一些重要的东西?

编辑: 我刚刚认识到,部署应用程序时,每次创建"proxy.conf"文件几秒钟,但几秒后它就会消失(ls -lsa在"/etc/nginx/conf.d/"中查看,请参阅"elasticbeanstalk"目录和"healthd_http.conf"的时间戳为13:34,"proxy.conf"的时间戳为13:43)

4 drwxr-xr-x 3 root root 4096  6. Dec 13:43 .
4 drwxr-xr-x 4 root root 4096  6. Dec 13:34 ..
4 drwxr-xr-x 2 root root 4096  6. Dec 13:34 elasticbeanstalk
4 -rw-r--r-- 1 root root  148  6. Dec 13:34 healthd_http.conf
4 -rwxr-xr-x 1 root root   26  6. Dec 13:43 proxy.conf
Run Code Online (Sandbox Code Playgroud)

几秒后ls -lsa"/etc/nginx/conf.d/":

4 drwxr-xr-x 3 root root 4096  6. Dec 13:44 .
4 drwxr-xr-x 4 root root 4096  6. Dec 13:44 ..
4 drwxr-xr-x 2 root root 4096  6. Dec 13:44 elasticbeanstalk
4 -rw-r--r-- 1 root root  148  6. Dec 13:44 healthd_http.conf
Run Code Online (Sandbox Code Playgroud)

Tom*_*Tom 10

经过几个小时的阅读文档,我发现我错过了Elastic Beanstalk Java SE平台官方AWS文档的一些重要部分(请参阅http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se -platform.html).

  1. 绝对是我的错误:我使用了错误的文件扩展名,文件夹".ebextensions"中的文件扩展名必须是".conf"而不是 ".config".

  2. 至少对于Java SE平台:可以直接在".ebextensions"目录中添加NGINX配置文件,而不使用"files:..."语法生成具有特定内容的文件,即在"."中创建代理文件/etc/nginx/conf.d/proxy.conf"只需直接添加".ebextension/nginx/conf.d/proxy.conf" client_max_body_size 20M;.随后,"proxy.conf"将部署到"/etc/nginx/conf.d/proxy.conf"并由默认的NGINX配置自动包含.

希望这个答案可以节省别人花在我身上的时间.