返回自定义错误时不显示自定义错误页面

返回自定义错误时不显示自定义错误页面

我正在尝试为非 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;
    }
}

相关内容