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

部署在Elastic Beanstalk的Symfony API除根路由外均返回404求助

解决Elastic Beanstalk部署Symfony API时非根路由404问题

这个问题的核心是Elastic Beanstalk默认的Nginx配置没有适配Symfony的URL重写规则——只有根路径被指向了public/index.php,其他请求都被Nginx当作静态资源查找,自然返回404。以下是具体的解决方法:

方法一:通过.ebextensions配置Nginx重写规则

这是最推荐的方式,不需要手动登录EC2实例,配置会随代码一起部署生效:

  1. 在Symfony项目根目录创建.ebextensions/nginx/conf.d目录结构
  2. 在该目录下新建symfony.conf文件,写入以下内容:
files:
  "/etc/nginx/conf.d/symfony.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      location / {
          try_files $uri $uri/ /index.php$is_args$args;
      }
  1. 将修改后的代码重新部署到Elastic Beanstalk

这个配置会让Nginx先检查请求路径是否对应存在的文件/目录,如果不存在,就把请求转发到index.php,由Symfony的路由组件处理所有端点请求。

额外检查项

如果配置后仍有问题,确认以下两点:

  • 确保Symfony的public目录被设置为EB的文档根。可以在composer.json中添加:
"extra": {
    "elastic-beanstalk": {
        "document-root": "public"
    }
}
  • 或者通过.ebextensions配置文档根:
option_settings:
  - namespace: aws:elasticbeanstalk:container:php:phpini
    option_name: document_root
    value: /var/app/current/public

验证方式

如果需要排查问题,可以登录EB的EC2实例,查看:

  • /etc/nginx/conf.d/symfony.conf是否存在且内容正确
  • /var/log/nginx/access.log和/var/log/nginx/error.log,确认请求是否被转发到index.php

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:18:19