加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

nginx不会在文档根目录的子目录中提供error_page

发布时间:2020-12-13 21:27:52 所属栏目:Nginx 来源:网络整理
导读:这是我的nginx配置的片段: server { error_page 500 /errors/500.html;} 当我在我的应用程序中导致500时,Chrome只显示其默认的500页(Firefox和Safari显示空白页面),而不是我的自定义错误页面. 我知道该文件存在,因为我可以访问http://server/errors/500.ht

这是我的nginx配置的片段:

server {
    error_page 500 /errors/500.html;
}

当我在我的应用程序中导致500时,Chrome只显示其默认的500页(Firefox和Safari显示空白页面),而不是我的自定义错误页面.

我知道该文件存在,因为我可以访问http://server/errors/500.html并且我看到该页面.我也可以将文件移动到文档根目录并将配置更改为:

server {
    error_page 500 /500.html;
}

和nginx正确地提供页面,所以它似乎不是它在服务器上错误配置的东西.

我也尝试过:

server {
    error_page 500 $document_root/errors/500.html;
}

和:

server {
    error_page 500 http://$http_host/errors/500.html;
}

和:

server {
   error_page 500 /500.html;
   location = /500.html {
       root /path/to/errors/;
   }
}

没有运气.

这是预期的行为吗?错误页面是否必须存在于文档根目录中,或者我错过了一些明显的东西?

更新1:这也失败了:

server {
    error_page 500 /foo.html;
}

当foo.html确实存在于文档根目录中时.看起来其他东西正在覆盖我的配置,但是这个块是/ etc / nginx / *中引用error_page指令的唯一位置.

还有其他可以设置nginx配置的地方吗?

最佳答案
尝试添加

proxy_intercept_errors on;

要么

fastcgi_intercept_errors on;

在服务器块中取决于您的配置.

这种配置工作正常:

  error_page   500 502 503 504  /500.html;
    location = /500.html {
        root   /home/static/pages;
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读