
nginx源码分析
文章平均质量分 83
tym8865
勤奋工作,刻苦学习,热爱编程
展开
-
nginx变量机制
在设置nginx配置文件的时候,配置文件中会出现$file等以$开头的字符串。这些以$开头的字符串在nginx中就是所谓的变量。nginx的变量分为nginx自定义的变量以及用户自定义的变量。nginx自定义的变量有很多,每个模块也可以定义自己的变量,例如ngx_http_core_variables这个就包含了很多nginx自定义的变量:static ngx_http_variable_t原创 2013-08-13 23:08:38 · 2223 阅读 · 0 评论 -
nginx事件模块之IO多路复用的选择
nginx是基于事件驱动的,也就是说nginx内部都是通过事件的发生来驱动的,如果没有事件,nginx就是阻塞在epoll_wait,select,sigsuspend等这样的系统调用上。各种操作系统对事件的处理及管理都是不同的。而且每种操作系统的IO多路复用的实现方式也是各不相同。而nginx是一种跨平台的高性能的web server,那它是怎样把各种操作系统的IO多路复用集合在一起,又是怎样让原创 2013-08-11 22:51:10 · 2352 阅读 · 0 评论 -
nginx脚本引擎
前面讲了nginx的变量机制,今天来讲讲nginx的脚本引擎。我们以一个比较简单的例子来讲述nginx的脚本引擎。例如,我们自己定以一个变量:set $file t_a;这个set指令就会调用ngx_http_rewrite_set函数,下面来看下ngx_http_rewrite_set:static char *ngx_http_rewrite_set(ngx_conf_t *cf,原创 2013-08-14 23:17:04 · 1812 阅读 · 0 评论 -
nginx超时事件的处理
几乎每个比较大型的系统都会有自己的一套超时事件的处理方式,nginx也不例外。nginx出于高性能的考虑,使用红黑树来管理超时的事件。这里红黑树的原理在网络中有很多文档去介绍,这里就不讲述红黑树的原理了。这篇博客值讲述nginx是怎么把事件与红黑树联系到一起的。大家都知道nginx处理事件有一个结构体:typedef struct ngx_event_s ngx_event_tstruct原创 2013-08-12 22:47:01 · 2390 阅读 · 0 评论 -
nginx的sendfile指令的作用
linux为了解决对读文件产生的从应用空间到内核空间复制数据产生的效率影响引进了零拷贝。什么是零拷贝?这里就不多说了,请参考http://blog.youkuaiyun.com/crazyguang/article/details/2423708,我们主要是讲述nginx怎么是用sendfile的。nginx通过使用sendfile指令来控制是不是用linux提供的零拷贝功能。具体配置如下:sendf原创 2013-09-06 17:31:45 · 7837 阅读 · 0 评论 -
nginx运行期间修改配置文件的处理
今天在群里讨论到一个问题就是:如果在nginx运行期间,修改了配置文件,这个时候是重启nginx还是有别的办法呢?对nginx比较熟的童鞋,脑子立马肯定会有答案。执行下面的命令就好了./nginx -s reload那么nginx是怎么处理reload的呢?是像squid那样停止所有的任务后再重读配置文件还是别的处理呢?nginx是不需要停止服务去读取配置文件的,下面来看nginx具体的处理。原创 2013-12-11 22:14:04 · 8614 阅读 · 0 评论 -
nginx的文件异步io
nginx使用的文件异步io的基于linux内核的,而并不是glibc库提供的。glibc通过的异步io是基于多线程实现的,并不是真正意义上的异步io。nginx只是在读文件时使用了异步io。那么有的童鞋就会问:那nginx为什么在写文件时不使用异步io?原因是这样的:linux内核的文件异步io是不支持缓存操作的,而正常的写入文件时往往是写入内存中就立刻返回,这样效率就比较高,而使用异步io写入原创 2013-12-29 22:57:08 · 3942 阅读 · 0 评论