nginx – 解决http请求

作者 : 开心源码 本文共1310个字,预计阅读时间需要4分钟 发布时间: 2022-05-11 共95人阅读

每个配置项都有这个结构:

struct ngx_http_core_loc_conf_s { ... ngx_http_handler_pt handler; ...};typedef ngx_int_t (*ngx_http_handler_pt)(ngx_http_request_t *r);

需要先define http request的return value (NGX_HTTP_OK… /src/http/ngx_http_request.h)

也可以返回nginx global error code:

#define NGX_OK 0 //繼續執行#define NGX_ERROR -1 #define NGX_AGAIN -2 //結束目前handler處理#define NGX_BUSY -3#define NGX_DONE -4 //框架不再執行#define NGX_DECLINED -5 //在同phase繼續找對該請求有興趣的module#define NGX_ABORT -6#define NGX_NEXT -7

ngx_http_request_s

  • method: NGX_HTTP_GET(0x0002), NGX_HTTP_POST(0x0008)…使用&判断flag

  • uri

  • http_version

  • header_in: 未经解析的http header

接收http header

ngx_http_request_t -> header_in存放接收到的header

接收http body

ngx_int_t ngx_http_read_client_request_body(ngx_http_request_t*r, ngx_http_client_body_handler_pt post_handler)

异步, 调使用时表示要求nginx开始接收request body, 接收完调使用post_handler.

发送http response header

ngx_int_t ngx_http_send_header(ngx_http_request_t *r);static ngx_int_t ngx_http_header_filter(ngx_http_request_t *r)//ngx_http_request_t -> header_out存放response header

例子:

nginx - 解决http请求

nginx

发送http response body

ngx_int_t ngx_http_output_filter(ngx_http_request_t *r, ngx_chain_t *in)

ngx_chain_t *in使用于容纳ngx_buf_t

例子:

ngx_buf_t *b = ngx_create_temp_buf(r->pool, 128);ngx_chain_t out;out.buf = b;out.next = NULL;return ngx_http_output_filter(r, &out); //發送response body
ngx_buf_t *ngx_create_temp_buf(ngx_pool_t *pool, size_t size)//nginx做的封装,创造暂存区

nginx - 解决http请求

nginx

nginx - 解决http请求

nginx

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » nginx – 解决http请求

发表回复