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

AWS Elastic Beanstalk Nginx环境部署Yii2 Advanced后端访问异常问题

你的配置存在3个核心问题:

  1. root指令路径逻辑错误
    Nginx的root指令不支持相对于上层root配置的相对路径,你写的../../backend/web是相对于Nginx启动时的工作目录(默认是/etc/nginx),无法映射到实际的项目代码路径,直接导致404错误。
    另外即便你改成绝对路径root /var/www/html/backend/web也不对:root会把location匹配的路径后缀拼到目录后,你访问/backend/test.php时,Nginx会尝试读取/var/www/html/backend/web/backend/test.php,这个路径不存在,仍然会返回404。/backend前缀的路径适配必须用alias指令,而非root。

  2. 缺失PHP请求处理规则
    你当前的配置只指定了静态文件的根目录,没有匹配/backend下的PHP请求的规则,PHP文件不会被转发给php-fpm处理,直接返回文件内容或者触发502网关错误。

  3. 手动修改EB平台Nginx配置不生效
    AWS Elastic Beanstalk Linux平台的Nginx配置是系统自动生成的,手动通过vim修改的配置会在实例重启、版本重新部署后被覆盖,必须通过项目内的.platform/nginx/conf.d/目录存放自定义配置,随部署包一同发布才能永久生效。


可用的参考配置

# 前端默认路由规则
root /var/www/html/frontend/web;
index index.php index.html index.htm;

# 后端路由规则
location ^~ /backend {
    alias /var/www/html/backend/web;
    index index.php;

    # 处理后端PHP请求
    location ~ ^/backend/(.*\.php)$ {
        try_files $uri =404;
        # 注意替换为你EB环境实际的php-fpm socket路径,常见为/run/php-fpm/www.sock或/var/run/php-fpm.sock
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        include fastcgi_params;
    }

    # Yii伪静态规则,适配URL美化
    if (!-e $request_filename) {
        rewrite ^/backend/(.*)$ /backend/index.php?r=$1 last;
    }
}

# 原有前端PHP请求处理规则保留即可
location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass unix:/run/php-fpm/www.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

校验步骤

  • 先确认EB实例中项目部署的实际根目录,部分环境默认路径为/var/app/current,如果不对需要把配置里的/var/www/html替换为实际路径
  • 修改配置后执行nginx -t校验语法无误后,再执行nginx -s reload重载配置
  • 要永久生效可将上述配置保存为项目根目录下的.platform/nginx/conf.d/yii.conf,随代码一同部署到EB即可自动加载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:39:03