Nginx ngx.exit 方法用于立即终止当前请求,并返回指定的 HTTP 状态码给客户端。它可以用于处理上游响应。

当接收到上游服务器的响应时,可以使用 ngx.exit 来立即终止当前请求,并将上游响应返回给客户端。例如,如果上游服务器返回了 HTTP 500 错误,可以使用 ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) 来返回相同的错误给客户端。

以下是一个示例:

location /upstream {
    proxy_pass http://backend_server;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # 接收上游响应
    proxy_next_upstream error timeout http_500;

    # 处理上游响应
    proxy_intercept_errors on;

    # 如果上游响应是HTTP 500错误,将其返回给客户端
    error_page 500 = @handle_error;
}

location @handle_error {
    # 使用ngx.exit来返回上游响应的HTTP状态码给客户端
    # 在这个例子中,如果上游服务器返回了HTTP 500错误,将返回相同的错误给客户端
    return 500;
}

在上述示例中,当接收到上游服务器返回的 HTTP 500 错误时,会使用 ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) 来立即终止当前请求,并返回相同的 HTTP 状态码给客户端。

请注意,ngx.exit 只能在 rewrite 阶段、access 阶段和 content 阶段中使用,不能在 header_filter 阶段和 body_filter 阶段中使用。

Nginx ngx.exit 指令:立即终止请求并返回上游响应

原文地址: https://www.cveoy.top/t/topic/p8jk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录