- 论坛徽章:
- 0
|
有个需求要根据request的body的内容决定要不要proxy_pass,我在preaccess阶段的handler里调用ngx_http_read_client_request_body来接收body,在ngx_http_read_client_request_body的回调函数里面解析body的内容,正常就继续后续阶段的处理,由proxy模块转发请求到upstream,异常就直接返回一个403页面.在preaccess_handler里直接返回NGX_DECLINED框架就会继续往后执行了,ngx_http_read_client_request_body的回调函数里要怎么搞才能继续执行后续阶段啊?跪求nginx开发大神们给个解决方案谢谢!!!!!
代码大致就是这个样子:
static void
read_body_done(ngx_http_request_t *r)
{
...
rc = process_body(r);
if (rc == NGX_OK) {
// 执行后续阶段的handler
} else {
// 返回403
}
}
static ngx_int_t
preaccess_handler(ngx_http_request_t *r)
{
...
rc = ngx_http_read_client_request_body(r, read_body_done);
if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
return rc;
}
return NGX_AGAIN;
}
|
|