• nginx中处理http header详解(1)

    日期:

    这里主要的头的处理是放在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[] = { ....................................

  • nginx中处理http header详解(2)

    日期:

    然后是charset filter,这个主要是处理nginx内部的charset命令,转换为设置的编码。这个filter就不介绍了,主要是一个解码的过程。 再接下来是chunk filter,它主要是生成chunk数据,这里要注意nginx只支持服务端生成chunk,而不支持客户端发送的chunk数据。c...

  • nginx的启动流程分析(一)

    日期:

    这篇我们会主要来分析配置文件相关的一些初始化,而在下一篇我们会详细分析http协议相关,以及socket的初始化信息。 nginx启动最重要的部分是在ngx_init_cycle中,我们接下来就会详细的分析这个函数,以及相关的函数. 下面就是ngx_init_cycle的流程图 首先先...

  • nginx的启动流程分析(二)

    日期:

    接上篇,这篇主要来看nginx的网络部分的初始化 首先是ngx_http_optimize_servers函数,这个函数是在ngx_http_block中被调用的,它的主要功能就是创建listening结构,然后初始化。这里ngx_listening_t表示一个正在监听的句柄以及它的上下文。 1 2 3 4 5 6 7 8...

  • nginx 0.8.x稳定版对linux aio的支持

    日期:

    前几天nginx的0.8.x正式成为stable,然后看了下代码,发现0.8加入了linux native aio的支持,我们知道在linux下有两种aio,一种是glibc实现的aio,这个比较烂,它是直接在用户空间用pthread进行模拟的。还有一种就是内核实现的aio,这些系统调用是以io_xxx开...

  • nginx least_conn 模块源码剖析

    日期:

    nginx在1.3.1添加了一个新模块 least_conn,也就是我们常说的最少连接负载均衡算法,简单来说就是每次选择的都是当前最少连接的一个server(这个最少连接不是全局的,是每个进程都有自己的一个统计列表)。 在看最少连接模块之前需要对round robin模块有一定的...

  • Nginx 在configure时的参数

    日期:

    configure 脚本确定系统所具有一些特性,特别是 nginx 用来处理连接的方法。然后,它创建 Makefile 文件。 configure 支持下面的选项: --prefix= path - Nginx安装路径。如果没有指定,默认为 /usr/local/nginx。 --sbin-path= path - Nginx可执行文件安装...

  • 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...

  • 开发nginx模块之Hello World篇

    日期:

    1进行echo模块的功能设计 以下是本模块要能识别的nginx配置 作为演示模块,我们这个模块仅仅完成以下功能: 读入nginx.conf中以echo开头的配置;echo是本模块新加入的命令,意思是直接输出; 例如: 在用户访问/hello时设置文件头为content-type=application/html;...

  • Nginx 的重载方式 (nginx -s reload)

    日期:

    Nginx 从 0.7.53 版本之后新增了一些命令行参数:-s 以前都是用kill -HUP `cat /usr/local/nginx/logs/nginx.pid` 方法来重新加载配置,现在只需要用 /usr/local/nginx/sbin/nginx -s reload 命令即可。 -s参数包含四个命令分别是 stop/quit/reopen/reload v...