nginx
Mrpre
??
展开
-
Nginx 的子请求(subrequest)原理分析
Nginx 的子请求(subrequest)原理分析Nginx 的子请求设计其依托于自身的access阶段,实现了对指定url发起旁路请求的功能,通常用来鉴权、镜像等功能。当然还有其他用法这里不一一赘述,通常用户使用的接口有如内置auth_request接口或者lua的capture接口。这两个对外的接口,都使用了Nginx的ngx_http_subrequest函数。本文就稍微梳理下其子请求流...原创 2020-03-03 15:58:42 · 2483 阅读 · 0 评论 -
Nginx源码分析之 长短连接
Nginx分析之长短连接:Nginx作为proxy,其长短连接有2部分,一部分是client一部分是server。downstream 和 upstream 未开keepalive先梳理一下http_proxy的流程 1:downstream 如果 location 配置了 proxy_pass,则会ngx_http_core_content_phase函数中调用ngx_http_p...原创 2018-06-04 16:52:51 · 1458 阅读 · 0 评论 -
Epoll 的水平模式、边缘模式 与 Nginx
读水平模式只要socket缓冲区有数据,且执行了EPOLL_CTL_ADD监听socket,内核就一直通知进程;即,只要内核通知了进程,但是进程没有read或者没有read完数据,就会触发唤醒进程。边缘模式socket有数据,会通知进程,不管进程有没有read,后续不再通知,除非 有新的数据到来 或者 再次调用 EPOLL_CTL_MOD 后,才会被唤醒。 但是一种情况例外,...原创 2018-06-06 15:19:34 · 2583 阅读 · 9 评论 -
Nginx源码分析之 upstream指令
Nginx 源码分析 upstream指令想要的解决问题:1:upstream存储结构 2:动态 upstream 流程(proxy_pass跟随变量或者域名)最简单的配置文件http { upstrem abc { server 1.1.1.1; server 2.2.2.2; } upstrem efg { ...原创 2018-06-16 09:34:23 · 2385 阅读 · 0 评论 -
Nginx源码分析之 HTTP2
Nginx 分析之 HTTP2首先,Nginx作为WEB服务器或者作为proxy,其基本的处理逻辑就是根据不同的Header、Method进行业务处理,无论前端协议是HTTP2还是HTTP 1.x,反正都是HTTP,所以Nginx业务处理中理论上并不关心前端是什么协议,而Nginx最开始支持的是HTTP1.x,所以当HTTP2协议过来时,它必然会先解析HTTP2,然后转换成Nginx现有流程中...原创 2018-06-16 10:05:20 · 3539 阅读 · 3 评论 -
Nginx源码分析之 配置结构1
个人认为,Nginx的配置结构复杂至极,比Nginx其他模块的都复杂,想要彻底搞清楚,还需要下功夫。下面是个人的一些理解。if (cmd->type & NGX_DIRECT_CONF) { /*"daemon" "worker_processes"等指令为NGX_DIRECT_CON原创 2018-07-10 15:01:09 · 345 阅读 · 0 评论 -
Nginx源码分析之 HTTP阶段
typedef enum { /*最开始的阶段,貌似Nginx原生没有该阶段的handler*/ NGX_HTTP_POST_READ_PHASE = 0, /*配置在server块的rewrite指令,则会处理hander,否则,handler进去直接return*/ NGX_HTTP_SERVER_REWRITE_PHASE, /*根据URI进行lo...原创 2018-07-11 15:40:35 · 614 阅读 · 0 评论 -
Nginx 假性内存泄露
Nginx 假性内存泄露Nginx在使用中,发现其使用的VSZ和RSS都在不断变大,查看新增的代码,没有找到内存泄露的地方,ngx_palloc和ngx_pfree都是对称调用的。Nginx 内存池机制使用Nginx开发过的都知道,在Nginx里面普遍使用ngx_palloc/ngx_pnalloc申请内存,其中入参有一个pool,它是从ngx_create_pool获得的一个对象,改函数入...原创 2018-12-27 10:37:58 · 2946 阅读 · 3 评论 -
Nginx 作为反向代理(proxy)时的一些buffer指令
Nginx 作为反向代理(ptoxy)时的一些buffer指令Nginx处理请求的行为Nginx 只要配置的proxy_pass 都会无条件执行 ngx_http_read_client_request_body尝试去读 client 的 body。请求不携带body常见于 GET/HEAD方法。此时,在ngx_http_read_client_request_body判断Content...原创 2019-02-28 16:42:25 · 5757 阅读 · 0 评论