nginx返回错误代码,该代码在服务器范围内映射了命名位置

nginx返回错误代码,该代码在服务器范围内映射了命名位置,nginx,Nginx,我使用命名位置根据特定条件将请求转发到特定的命名块。 这就是我当前配置的样子 server { listen 8080; server_name localhost; error_page 420 = @handler; location / { if ($http_x_client = 'handler'){ return 420; } error_page 500 =

我使用命名位置根据特定条件将请求转发到特定的命名块。 这就是我当前配置的样子

server {
    listen       8080;
    server_name  localhost;


    error_page 420 = @handler;

    location / {
        if ($http_x_client = 'handler'){
             return 420;
        }
        error_page 500 = @fallback;
        proxy_intercept_errors on;
        proxy_pass  http://www.example.com;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
   }

   location @fallback{
        proxy_pass  http://www.example2.com;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
   }

   location @handler{
        proxy_pass  http://www.example3.com;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
   }

}
现在,当我点击包含标题X_Client=handler的页面时,它返回420状态,而不是@handler块。 我已经把范围缩小到了线路的问题

error_page 500 = @fallback; 
是否有人知道此配置有什么问题,或者这是预期的nginx行为?

引用自:

只有在当前级别上未定义
error\u页面
指令时,才会从上一级别继承
error\u页面
指令

这是nginx中大多数指令的基本规则