Der*_*key 9 nginx custom-errors
我正在尝试为 nginx 中的非 HTTPS 请求返回自定义 400 错误页面。我是 nginx 的新手,但我在自定义错误页面上阅读了许多示例页面,但似乎对我没有任何作用。我的配置:
server {
listen 80;
error_page 400 /400.html;
location = /400.html {
root /var/www/html;
}
return 400;
}
Run Code Online (Sandbox Code Playgroud)
在返回工作,因为如果我改变代码(如401或500),我得到了适当的默认nginx的错误页面。我知道该文件存在,因为如果我取出退货,它将直接为我的 400.html 页面提供服务,没有任何问题。但是当我返回错误代码时,我尝试过的任何事情都没有导致我的自定义页面出现。
我错过了什么?
更新:我尝试过的其他变体无济于事:
server {
listen 80;
error_page 400 /400.html;
location = /400.html {
root /var/www/html;
}
return 400;
}
server {
listen 80;
root /var/www/html;
error_page 400 /400.html;
location = /400.html {
allow all;
}
return 400;
}
server {
listen 80;
root /var/www/html;
error_page 400 /400.html;
return 400;
}
Run Code Online (Sandbox Code Playgroud)
我在 Stackoverflow 上发现了这个问题,它完成了我一直在寻找的问题。
我猜无论出于何种原因,即使返回在服务器块内工作,它也不尊重任何error_page指令。这可能是一个错误,或者我不明白的故意行为。解决方案是将return放在location块中:
server {
listen 80;
root /var/www/html;
error_page 400 /400.html;
location = /400.html {
internal;
}
location / {
return 400;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9265 次 |
| 最近记录: |