我正在尝试为非 HTTPS 请求触发的 403 错误提供自定义错误页面。403 错误正常返回,但显示的是默认 nginx 错误页面,而不是自定义错误页面。
改变顺序(在 if 语句上方定义 error_page)似乎没有任何影响。
server {
listen 80;
server_name example.com;
root "/var/www/example.com";
index "index.html";
[..]
if ($scheme != "https") {
return 403;
}
error_page 403 /error_pages/403_forbidden.html;
}
我是不是漏掉了什么?为什么在这种情况下自定义错误页面没有显示?
答案1
感谢大家对我的问题的评论,我发现需要使用位置块来解决我的问题。这样错误页面仍可按预期工作。
location / {
if ($scheme != "https") {
return 403;
}
}