zoukankan      html  css  js  c++  java
  • 【Nginx】处理用户请求

    实际处理请求的方法ngx_http_mytest_handler(在配置配置项的回调方法中被调用(用于解析配置项))将接收一个ngx_http_request_t类型的参数,返回一个ngx_int_t类型的结果。

    typedef ngx_int_t (*ngx_http_handler_pt)(ngx_http_request_t *r);

    请求的所有信息都可以在传入的ngx_http_request_t类型参数r中获得。

    typedef struct ngx_http_request_s ngx_http_request_t;

    struct ngx_http_request_s

    {

      ngx_uint_t method;

      ngx_uint_t http_version;

      

      ngx_str_t request_line;

      ngx_str_t uri;

      ngx_str_t args;

      ngx_str_t exten;

      ngx_str_t unparsed_uri;

      ngx_str_t method_name;

      ngx_str_t http_protocol;

      u_char *uri_start;

      u_char *uri_end;

      u_char *uri_ext;

      u_char *args_start;

      u_char *request_start;

      u_char *request_end;

      u_char *method_end;

      u_char *schema_start;

      u_char *schema_end;

    };

    在对一个用户请求进行解析时,可以得到下列4类信息

    1)方法名

    2)URI

    3)URL参数

    4)协议版本

    获取HTTP头部

    在ngx_http_request_t *r中就可以取到请求中的HTTP头部。

    struct ngx_http_request_s

    {

      ngx_buf_t *header_in;//指向nginx收到的未经解析的http头部

      ngx_http_headers_in_t headers_in;//存储已经解析过的http头部

    };

    获取http包体

    http包体的长度有可能非常大,如果试图一次性调用并读取完所有的包体,那么多半会阻塞Nginx进程。http框架提供了一种方法来异步地接受包体

    ngx_int_t ngx_http_read_client_request_body(ngx_request_t *r,ngx_http_client_body_handler_pt post_handler);

  • 相关阅读:
    oracle中文乱码问题
    并发登录查询
    AJAX 笔记
    jQuery笔记
    js BOM 笔记
    HTML DOM笔记
    JS函数笔记
    js笔记
    json笔记
    css3笔记
  • 原文地址:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/3827172.html
Copyright © 2011-2022 走看看