nginx的ngx_str_t】的更多相关文章

在nginx里的ngx_tr_t结构是字符串定义如下 typedef struct { size_t len; u_char *data; }ngx_str_t; 在给这样的结构体赋值的时候,nginx常用ngx_string(),这其实是个宏,如下 #define ngx_string(str) { sizeof(str) - 1, (u_char *) str } 当要建一个ngx_str_t类型的字符串,正确的做法是ngx_str_t  mystr = ngx_string("hello&…
nginx中关于字符串的数据结构位于src/core/ngx_string.c和src/core/ngx_string.h中 先来看一下数据结构: typedef struct { size_t len; u_char *data; } ngx_str_t; data指针指向字符串起始地址,len表示字符串的有效长度.这里面的data并不保证以'\0'结尾,所以必须配合len去使用,否则极其容易造成缓冲区溢出.另外,不保证以'\0'也就说明它是二进制安全的. 下面看一下比较简单的一些函数,都是用…
在nginx启动过程中,模块的初始化是整个启动过程中的重要部分,而且了解了模块初始化的过程对应后面具体分析各个模块会有事半功倍的效果.在我看来,分析源码来了解模块的初始化是最直接不过的了,所以下面主要通过结合源码来分析模块的初始化过程. 稍微了解nginx的人都知道nginx是高度模块化的,各个功能都封装在模块中,而各个模块的初始化则是根据配置文件来进行的,下面我们会看到nginx边解析配置文件中的指令,边初始化指令所属的模块,指令其实就是指示怎样初始化模块的. 模块初始化框架 模块的初始化主要…
Nginx--connection&request 在Nginx中,主要包括了连接与处理两部分. connection 在src/core文件夹下包含有connection的源文件,Ngx_connection.h/Ngx_connection.c中可以找到SOCK_STREAM,也就是说Nginx是基于TCP连接的. 连接过程 对于应用程序,首先第一步肯定是加载并解析配置文件,Nginx同样如此,这样可以获得需要监听的端口和IP地址.之后,Nginx就要创建master进程,并建立socket…
nginx实现了自己的hash数据结构,正如数据结构中讲述的那样,nginx用开放链表法解决冲突,不过不同的是一旦一个hash表被初始化后就不会被修改,即插入和删除,只进行查询操作,所以nginx通过计算初始化时key的个数来确定hash表中桶的个数和每个桶的容量,这样能最大限度的利用内存资源.虽然用开放链表法,实际上每个桶都是一块连续的内存空间.nginx实现了两类hash结构,一类是key中包含通配符的ngx_hash_wildcard_t,另一类则是key中不包含通配符的ngx_hash_…
在1.4.x版本的nginx没有发现这个问题,但是在1.5.x版本就遇到了这个问题 由于Nginx在新版本中,使用了标准的 MIME-Type:application/javascript.而在nginx_concat_module模块目前版本的代码中,写的是 application/x-javascript 的类型. 在nginx-http-concat-master 找到,14行 static ngx_str_t ngx_http_concat_default_types[] = { ngx…
麻雀虽小,五脏俱全,小小的Hello World盛行于程序世界,就在于其代码虽短,但要真正运行起来,需要我们略通基本语法,稍懂编译运行环境,知晓操作过程,最后,还有一颗持之以恒,不怕折腾的心.前一阵子跑通了Nginx的Hello World程序,今天重温了一遍就顺便写篇博客,记录下来,好记性不如烂笔头,方便以后查阅. 首先在着手操作之前,需要安装好Nginx,因为开发过程中涉及到源代码编译等步骤,最好采用源代码安装的方式.关于安装的具体步骤,可以参考这篇文章或者自行百度,这里就不再多说. 编写c…
crul新浪微博的时候发现对面用的是nginx服务器,在虎扑足球(挺好的足球论坛)讨论世界杯也发现他们也用这nginx,联想到阿里的tengine也是基于nginx的,觉得有了解一下nginx的必要了. 1. nginx安装 nginx安装跟普通开源软件安装相似(都使用makefile),具体流程:下载源文件,./configure,make,make install. 在./configure过程中,会出现一些找不到一些依赖组件的提示,自行安装即可.可以通过源码编译方式安装对应组件.也可以通过…
1.   前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并发情况下具有巨大的性能优势. Nginx属于典型的微内核设计,其内核非常简洁和优雅,同时具有非常高的可扩展性.Nginx最初仅仅主要被用于做反向代理,后来随着HTTP核心的成熟和各种HTTP扩展模块的丰富,Nginx越来越多被用来取代Apache而单独承担HTTP Server的责任,例如…
http://tengine.taobao.org/book/chapter_02.html 初探nginx架构(100%)¶ 众所周知,nginx性能高,而nginx的高性能与其架构是分不开的.那么nginx究竟是怎么样的呢?这一节我们先来初识一下nginx框架吧. nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程.我们也可以手动地关掉后台模式,让nginx在前台运行,并且通过配置让nginx取消master进程,从而…