这此主要是分析发送数据到客户端的部分以及buffering状态下,nginx接收upstream数据的部分,这也是upstream的最复杂的部分,这里我还是忽略了cache部分,以后我会专门写blog来分析nginx的cache部分。 这部分的函数入口是ngx_http_upstream_send_response,这...
这次主要来分析upstream中的发送数据给client, 以及当buf不足,将一部分写到temp file的部分,他们对应的函数分别是ngx_event_pipe_write_to_downstream和ngx_event_pipe_write_chain_to_temp_file. 先来看ngx_event_pipe_write_to_downstream,这个函数顾名...
这里主要的头的处理是放在filter中做的,我们首先来看config(默认情况)后,nginx的obj目录下的ngx_modules.c这个文件中的关于filter的部分: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ngx_module_t *ngx_modules[] = { ....................................
然后是charset filter,这个主要是处理nginx内部的charset命令,转换为设置的编码。这个filter就不介绍了,主要是一个解码的过程。 再接下来是chunk filter,它主要是生成chunk数据,这里要注意nginx只支持服务端生成chunk,而不支持客户端发送的chunk数据。c...
这篇我们会主要来分析配置文件相关的一些初始化,而在下一篇我们会详细分析http协议相关,以及socket的初始化信息。 nginx启动最重要的部分是在ngx_init_cycle中,我们接下来就会详细的分析这个函数,以及相关的函数. 下面就是ngx_init_cycle的流程图 首先先...
接上篇,这篇主要来看nginx的网络部分的初始化 首先是ngx_http_optimize_servers函数,这个函数是在ngx_http_block中被调用的,它的主要功能就是创建listening结构,然后初始化。这里ngx_listening_t表示一个正在监听的句柄以及它的上下文。 1 2 3 4 5 6 7 8...
前几天nginx的0.8.x正式成为stable,然后看了下代码,发现0.8加入了linux native aio的支持,我们知道在linux下有两种aio,一种是glibc实现的aio,这个比较烂,它是直接在用户空间用pthread进行模拟的。还有一种就是内核实现的aio,这些系统调用是以io_xxx开...
nginx在1.3.1添加了一个新模块 least_conn,也就是我们常说的最少连接负载均衡算法,简单来说就是每次选择的都是当前最少连接的一个server(这个最少连接不是全局的,是每个进程都有自己的一个统计列表)。 在看最少连接模块之前需要对round robin模块有一定的...
configure 脚本确定系统所具有一些特性,特别是 nginx 用来处理连接的方法。然后,它创建 Makefile 文件。 configure 支持下面的选项: --prefix= path - Nginx安装路径。如果没有指定,默认为 /usr/local/nginx。 --sbin-path= path - Nginx可执行文件安装...
NAME posix_memalign - aligned memory allocation (ADVANCED REALTIME) SYNOPSIS [ADV] #include stdlib.h int posix_memalign(void **memptr, size_talignment, size_tsize); DESCRIPTION Theposix_memalign() function shall allocatesizebytes aligned o...