Bra*_*dan 5 nginx custom-errors
这是我的 nginx 配置的一个片段:
server {
error_page 500 /errors/500.html;
}
Run Code Online (Sandbox Code Playgroud)
当我在我的应用程序中导致 500 时,Chrome 只显示其默认的 500 页面(Firefox 和 Safari 显示空白页面)而不是我的自定义错误页面。
我知道该文件存在,因为我可以访问http://server/errors/500.html
并看到该页面。我还可以将文件移动到文档根目录并将配置更改为:
server {
error_page 500 /500.html;
}
Run Code Online (Sandbox Code Playgroud)
并且 nginx 正确地提供页面,所以它似乎不是服务器上配置错误的其他东西。
我也试过:
server {
error_page 500 $document_root/errors/500.html;
}
Run Code Online (Sandbox Code Playgroud)
和:
server {
error_page 500 http://$http_host/errors/500.html;
}
Run Code Online (Sandbox Code Playgroud)
和:
server {
error_page 500 /500.html;
location = /500.html {
root /path/to/errors/;
}
}
Run Code Online (Sandbox Code Playgroud)
没有运气。
这是预期的行为吗?错误页面是否必须存在于文档根目录中,或者我是否遗漏了一些明显的内容?
更新 1:这也失败了:
server {
error_page 500 /foo.html;
}
Run Code Online (Sandbox Code Playgroud)
何时foo.html
确实存在于文档根目录中。似乎其他东西正在覆盖我的配置,但此块是唯一/etc/nginx/*
引用该error_page
指令的地方。
还有其他地方可以设置nginx配置吗?
尝试添加
proxy_intercept_errors on;
Run Code Online (Sandbox Code Playgroud)
或者
fastcgi_intercept_errors on;
Run Code Online (Sandbox Code Playgroud)
在服务器块中,具体取决于您的配置。
这种配置工作正常:
error_page 500 502 503 504 /500.html;
location = /500.html {
root /home/static/pages;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1810 次 |
最近记录: |