我按照文档替换了默认的 nginx.conf 文件。所以树看起来像这样:
app_root/
├─ .platform/
│ ├─ nginx/
│ │ ├─ nginx.conf
│ │ ├─ conf.d/
│ │ │ ├─ my_custom_conf.conf
虽然一切看起来都正确,但部署后,配置最终从 .platform 移动到
/var/proxy/staging
;事实上,eb-engine.log 报告了这一点:
[INFO] Running command /bin/sh -c cp -rp /var/app/staging/.platform/nginx/. /var/proxy/staging/nginx
这意味着真正的配置文件
/etc/nginx/nginx.conf
仍然是默认的。
您可以在AWS文档
中找到答案/var/app/staging/
– 在部署期间处理应用程序源代码的地方。/var/app/current/
– 应用程序源代码处理后运行的地方。部署新的代码版本时,
/var/app/staging
将用于运行构建命令并测试设置。它还用于测试 nginx 配置文件。如果部署成功,/staging
中的代码将移至/current
,nginx配置将移至/etc/nginx/nginx.conf
。
/etc/nginx/nginx.conf
是活动配置文件。您可以使用 nginx -t
来查看这一点。
[ec2-user@ip-172-31-1-161 ~]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
但是,
/etc/nginx/nginx.conf
的内容不是默认配置。无论您在应用程序目录的 /.platform/nginx/nginx.conf
中放入什么,最终都会在 /etc/nginx/nginx.conf
中。
在
eb-engine.log
中,您可以看到暂存中的配置检查。如果成功,您将看到 cp
命令,将文件复制到 /etc/nginx
:
2022/09/07 14:23:03.027695 [INFO] Running command /bin/sh -c /usr/sbin/nginx -t -c /var/proxy/staging/nginx/nginx.conf
2022/09/07 14:23:03.078615 [INFO] nginx: the configuration file /var/proxy/staging/nginx/nginx.conf syntax is ok
nginx: configuration file /var/proxy/staging/nginx/nginx.conf test is successful
2022/09/07 14:23:03.078683 [INFO] Running command /bin/sh -c cp -rp /var/proxy/staging/nginx/* /etc/nginx
今天遇到了完全相同的问题。
eb-engine.log
显示了这一点:
[INFO] Running command /bin/sh -c cp -rp /var/app/staging/.platform/nginx/. /var/proxy/staging/nginx
此后再也没有出现过 nginx 相关日志。
仔细研究了AWS文档很长时间,我发现了这个:
看来,如果它在 Amazon Linux 2 上,并且您正在使用 Docker Compose,那么您将无法设置 Nginx 服务器。
这与其他答案的日志差异一致,因为 Nginx 从未被提出来检查已复制到
.conf
文件的语法:
[INFO] nginx:配置文件 /var/proxy/staging/nginx/nginx.conf 语法没问题