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

Docker中子目录部署Laravel返回404错误求助

Docker子目录部署Laravel出现404的Nginx配置修复

你的Nginx配置核心问题出在/laravel路径的规则设置上,以下是修正方案和原因说明:

修正后的完整Nginx配置

server {
    listen 80;
    client_max_body_size 120M;
    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_read_timeout 180;
    }
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;
        gzip_static on;
    }
    
    location /laravel {
        alias /var/www/laravel/public;
        try_files $uri $uri/ /laravel/index.php?$query_string;
        
        # 确保子目录下的PHP文件正常解析
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass app:9000;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_read_timeout 180;
        }
    }
}

关键修改点说明

  1. 替换root为alias
    原配置用root /var/www/laravel/public时,Nginx会把请求/laravel/xxx拼接成/var/www/laravel/public/laravel/xxx,这和实际文件路径不符。改用alias后,会直接将/laravel/xxx映射到/var/www/laravel/public/xxx,完美匹配Laravel的public目录结构。

  2. 修正try_files的 fallback 路径
    原配置里的/laravel/public/index.php是错误路径,因为alias已经指向了public目录,正确的fallback应该是/laravel/index.php,确保请求能转发到Laravel的入口文件。

  3. 嵌套PHP解析规则
    主配置的location ~ \.php$不会优先匹配子目录下的PHP请求,嵌套规则后可以保证/laravel下的PHP文件被正确传递给FastCGI处理,同时用$request_filename确保脚本路径准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:42:55