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

Docker部署Nginx+MySQL+PHP7.4的Laravel项目全路由返回404求助

Docker部署Laravel全路由返回404问题排查方案
  • 第一步:验证Nginx配置有效性
    进入Nginx容器执行docker exec -it web sh,依次执行如下命令:
    nginx -t
    
    检查配置语法是否正确,如返回success再执行nginx -s reload重载配置。同时确认你本地docker/nginx目录下的配置文件后缀必须为.conf,否则Nginx不会自动加载该配置。如需定位具体错误可查看Nginx错误日志:cat /var/log/nginx/error.log
  • 第二步:校验目录挂载正确性
    进入Nginx容器后执行ls /var/www/public,确认目录下存在Laravel的入口文件index.php。如果返回文件不存在,说明你的挂载路径配置错误:你的docker-compose.yml中把宿主机当前目录挂载到了容器内的/var/www,请确认宿主机docker-compose.yml所在目录下是否直接存放Laravel项目,若Laravel项目存放在子目录(如src目录),需要把所有服务中volumes挂载的./:/var/www修改为./src:/var/www。
  • 第三步:修正Laravel目录权限
    进入PHP容器执行docker exec -it app sh,执行如下命令修正权限:
    chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache
    chmod -R 775 /var/www/storage /var/www/bootstrap/cache
    
    权限不足会导致Laravel无法正常写入缓存、日志文件,触发异常404。
  • 第四步:优化Nginx伪静态规则
    把你的docker/nginx/app.conf中location /段的配置修改为Laravel官方推荐写法:
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    修改后重载Nginx配置即可。
  • 第五步:清除Laravel路由缓存
    进入PHP容器执行如下命令清除已缓存的路由:
    php artisan route:clear
    
    若你部署时执行过php artisan route:cache,后续新增路由没有重新生成缓存的情况下会触发404。
  • 第六步:开启调试定位问题
    修改Laravel项目.env文件,将APP_DEBUG=false改为APP_DEBUG=true,重新访问页面即可看到具体的错误提示,进一步定位根因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 04:36:04