Nginx ngx.exit 指令:立即终止请求并返回上游响应
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 阶段中使用。
原文地址: https://www.cveoy.top/t/topic/p8jk 著作权归作者所有。请勿转载和采集!