我正在将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的根目录中。
尝试不使用脚本将文件简单地放入.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等)的输出。
我可以为您提供以下链接,该链接描述了在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