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

Laravel预发布环境触发异常时显示Nginx 404页面本地正常如何解决

问题排查方案

1. Nginx 站点根目录与重写规则校验

这是概率最高的问题原因,优先排查:

  • 确认站点配置的root参数指向Laravel项目的public目录,而非项目根目录
  • 确认location /块中存在正确的重写规则,示例正确配置如下:
server {
    listen 80;
    server_name 你的站点域名;
    root /www/你的项目路径/public; # 必须指向public目录

    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string; # 不可缺少这行配置
    }

    # 后续php处理配置
}

如果缺少上述try_files配置,当Laravel触发异常返回非200状态码时,Nginx会直接查找对应路径的静态文件,找不到就返回404而非交给Laravel处理异常渲染。
修改配置后执行nginx -t校验配置合法性,校验通过后执行nginx -s reload重载配置生效。

2. FastCGI 错误拦截配置校验

预发布/生产环境的Nginx常默认开启fastcgi_intercept_errors参数:

  • 该参数值为on时,只要PHP返回的HTTP状态码≥400,Nginx会直接忽略PHP返回的响应内容,用自身的错误页替代
  • 此时Laravel正常渲染的500异常页会被拦截,Nginx如果没配置对应500错误页,就会返回默认的404页
  • 临时将配置改为fastcgi_intercept_errors off;,重载Nginx后测试即可验证问题

3. Laravel 异常处理器校验

确认项目无自定义异常跳转逻辑:

  • 检查app/Exceptions/Handler.php的render方法,是否存在异常触发时强制跳转到不存在路由的逻辑
  • 确认非本地环境下没有强制覆写异常响应为404的自定义配置

4. 目录权限校验

确认项目目录权限配置正确:

  • storage、bootstrap/cache目录需要给Nginx运行用户(通常为www-data、nginx)开放读写权限
  • 权限不足时Laravel可以写入日志,但无法正常渲染异常页,也会触发Nginx返回404

内容的提问来源于stack exchange,提问作者code-8

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:45:08