You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Elastic Beanstalk中Nginx运行数天后故障的排查修复问询

AWS Elastic Beanstalk Nginx 7天后显示默认欢迎页的问题排查与修复

问题现象

在AWS Elastic Beanstalk部署PHP 8.1+Nginx网站,初始运行正常,但每隔约7天会出现Nginx默认欢迎页,需重新部署应用或重启Nginx才能恢复,之后问题重复出现。

核心原因分析

  1. Nginx配置存在语法错误:你的.platform/nginx/nginx.conf中有两处明显语法问题,导致Nginx在自动重启(如系统维护、进程异常重启、平台配置刷新)时加载失败,自动 fallback到默认配置文件,从而显示默认欢迎页:
    • 存在无意义的无效代码行:https://$host/ect/gamesrc/javascript/tw/index_all_games.php [L,R=301],缺少rewrite关键字和路径匹配规则,属于非法指令。
    • 第二个if ($http_user_agent !~ "Snabcd")块内的最后一条rewrite语句末尾未加分号,违反Nginx语法规范。
  2. Elastic Beanstalk定期维护触发配置重载:EBS会定期执行实例健康检查、平台更新等操作,可能触发Nginx配置重载,此时若配置有语法错误,Nginx无法加载自定义配置,只能使用默认配置。

修复步骤

1. 修复Nginx配置语法错误

修改.platform/nginx/nginx.conf中的错误:

  • 删除/修正无效代码行:
    原错误行:

    https://$host/ect/gamesrc/javascript/tw/index_all_games.php [L,R=301]
    

    如果这行是遗漏前缀的rewrite规则,补充完整(示例:假设匹配/games_old路径):

    rewrite ^/?games_old/?$ https://$host/ect/gamesrc/javascript/tw/index_all_games.php [L,R=301];
    

    如果是冗余代码,直接删除。

  • 补全rewrite语句的分号:
    原代码:

    rewrite ^/?cup/product/([^/]+)/([^/]+)/([^/]+)(?:/(menu-selected)/([^/]+)|)/?$ https://$host/indexpc.php?c1=$1&c2=$2&c3=$3&f_urlseo=1&f_idxt=cpn&$4=$5 
    

    修改为:

    rewrite ^/?cup/product/([^/]+)/([^/]+)/([^/]+)(?:/(menu-selected)/([^/]+)|)/?$ https://$host/indexpc.php?c1=$1&c2=$2&c3=$3&f_urlseo=1&f_idxt=cpn&$4=$5 permanent;
    
  • 验证配置合法性:在本地或EBS实例上执行nginx -t,确保输出nginx: configuration file /etc/nginx/nginx.conf test is successful,确认配置无语法错误。

2. 优化EBS配置,避免配置冲突与无效重启

修改你的EBS配置文件(.ebextensions/xxx.config),添加配置验证步骤,确保只有合法配置才会被加载:

packages:
  yum:
    sysstat: []
Resources:
  sslSecurityGroupIngress: 
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: {Ref : AWSEBSecurityGroup}
      IpProtocol: tcp
      ToPort: 443
      FromPort: 443
      CidrIp: 0.0.0.0/0
container_commands:
  01nginxconfigtest:
    command: "nginx -t"
    ignoreErrors: false # 配置错误时终止部署,避免无效配置上线
  02nginxrestart:
    command: "sudo service nginx restart"

3. 调整Nginx配置结构(可选但推荐)

避免完全替换EBS默认的nginx.conf,改为在.platform/nginx/conf.d/目录下创建自定义配置文件(如custom.conf),存放你的rewrite、location等自定义规则。这样可以减少与EBS平台默认配置的冲突,降低后续平台更新导致的配置失效风险。

4. 监控日志快速定位后续问题

若问题再次出现,登录EBS实例查看Nginx错误日志/var/log/nginx/error.log,里面会记录配置加载失败、启动异常的具体原因,便于快速排查。


内容的提问来源于stack exchange,提问作者user2818066

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 09:35:03