这个post_handler就是传给ngx_http_read_client_request_body的参数,即ngx_http_upstream_init 先将前面准备好的r->request_body->buf给到ngx_http_upstream_t的requet_bufs 创建发往upstream的request(u->create_request),调用是下图中的ngx_http_proxy_create_request 在ngx_http_proxy_create_request中,先复习...
}//返回非NGX_OK表示Nginx的事件框架触发事件需要多次调度才能完成丢弃包体这一动作/*rc == NGX_AGAIN*/r->read_event_handler = ngx_http_discarded_request_body_handler;//下次读事件到来时通过ngx_http_request_handler来调用/*有可能执行了ngx_http_block_reading->ngx_http_block_reading,所以如果需要继续...
二、ngx_http_request_body_t结构体 typedefstruct{ ngx_temp_file_t*temp_file; ngx_chain_t*bufs;/*消息体都保存在这个chain里面*/ ngx_buf_t*buf; /*用作临时存储的buf,在ngx_http_read_client_request_body和ngx_http_do_read_client_request_body中用得到*/ off_trest; ngx_chain_t*to_write; ...
ngx_http_process_host(ngx_http_request_t *r, ngx_table_elt_t *h, ngx_uint_t offset) { rc = ngx_http_validate_host(&host, r->pool, 0); if (rc == NGX_DECLINED) { ngx_log_error(NGX_LOG_INFO, r->connection->log, 0, client sent invalid host header"); ngx_http_finalize_req...
ngx.req.get_body_data, ngx.req.get_body_file, ngx.var.request_body return nil server { listen 80; server_name _; location / { # client_body_buffer_size 50M; # client_max_body_size 50M; proxy_request_buffering off; proxy_http_version 1.1; client_max_body_size 0; ...
首先一个http请求包含请求消息与响应消息。请求消息包括请求行、请求头、请求体。响应消息包括响应行、响应头、响应体。 其次,在nginx中,ngx_http_request_t代表一个http请求,即ngx_http_request_t中包含了所有http请求的内容。 再次,关于message-body的存在与否,是与HTTP协议有关。
proxy_http_version 1.0 ; #Nginx服务器提供代理服务的http协议版本1.0,1.1,默认设置为1.0版本。 #proxy_method get; #支持客户端的请求方法。post/get; proxy_ignore_client_abort on; #客户端断网时,nginx服务器是否中断对被代理服务器的请求。默认为off。 proxy_ignore_headers "Expires" "Set-Cookie"; #Ng...
location /proxy { proxy_pass http://nginx2$request_uri; proxy_http_version 1.1; } 该配置下返回: {"uri":"/proxy/xxx","method":"GET","body":""} 使用新配置: location /proxy { proxy_pass http://nginx2$request_uri; proxy_http_version 1.1; proxy_method POST; proxy_set_header Author...
也就是说,当客户端提前关闭连接的时候,如果 ngx.req.socket 中的数据没有被读取,那么 ngx.on_abort 里注册的函数不会被触发。实际上指的就是非 http 情况,也就是自己处理 socket 的情况,比如 websocket: 代码语言:javascript 复制 lua_check_client_abort on;location/test_websocket{content_by_lua_block{ngx...
ngx_http_lua_ssl_certby.c ngx_http_lua_ssl_certby.h ngx_http_lua_ssl_client_helloby.c ngx_http_lua_ssl_client_helloby.h ngx_http_lua_ssl_ocsp.c ngx_http_lua_ssl_session_fetchby.c ngx_http_lua_ssl_session_fetchby.h ngx_http_lua_ssl_session_storeby.c ngx_...