AWS Linux2 PHP8环境下.platform/nginx/nginx.conf未覆盖默认配置求助
解决方案
1. 首先核对部署包路径规则
.platform/nginx/nginx.conf必须放在部署包的根目录,和你的PHP应用入口目录(比如public/)同级,不能嵌套在任何子文件夹内。- 若使用Zip包部署,打包时需进入项目根目录选中所有文件打包,不要直接打包外层项目文件夹,否则会导致EB无法识别.platform路径。
2. 自定义nginx.conf的必填规则
Amazon Linux 2的PHP平台EB环境会自动生成服务相关的Nginx配置片段,你的自定义nginx.conf必须包含默认的引用规则,否则会触发配置语法错误,EB会自动回滚到官方默认配置:
必须在http块内保留以下配置行
include /etc/nginx/conf.d/*.conf; include /var/proxy/staging/nginx/conf.d/*;
配置修改完成后本地先执行nginx -t校验语法正确性,再上传部署。
3. 若路径和配置都正常,使用ebextension强制覆盖
如果.platform的覆盖逻辑不生效,直接使用ebextension完成配置替换,在项目根目录新建.ebextensions/00_nginx_override.config,内容如下:
files: /etc/nginx/nginx.conf: mode: "000644" owner: root group: root content: | # 这里粘贴你完整的自定义nginx.conf全量内容 user nginx; worker_processes auto; error_log /var/log/nginx/error.log; # ...剩下的你的配置内容 container_commands: 01_verify_nginx_config: command: "sudo nginx -t" 02_reload_nginx: command: "sudo systemctl reload nginx"
部署前删除之前的.platform/nginx/nginx.conf文件,避免优先级冲突。
4. 生效验证
部署完成后执行eb ssh登录实例,运行cat /etc/nginx/nginx.conf确认内容是否为你的自定义配置即可。
内容的提问来源于stack exchange,提问作者HRo
相关产品推荐
相关产品推荐

