娄振林专栏

专注于后台技术

nginx源码分析(9)——filter模块

phase handler处理中介绍了content handler用于产生响应内容,随便找一个content phase的模块,比如:ngx_http_static_module.c,会发现在content handler中会调用ngx_http_send_header,然后最后调用ngx_ht...

2012-10-11 18:11:14

阅读数 7257

评论数 7

nginx源码分析(8)——phase handler处理

nginx将请求的处理过程划分为11个phase(阶段),相当于是对请求处理的一种抽象,便于定制处理过程。这个11个phase,分别是(定义在http/ngx_http_core_module.h): typedef enum { NGX_HTTP_POST_READ_PHASE =...

2012-10-10 14:12:55

阅读数 8408

评论数 1

nginx源码分析(7)——请求处理

在建立连接过程中,对于nginx监听到的每个客户端连接,都会将它的读事件的handler设置为ngx_http_init_request函数,这个函数就是请求处理的入口。在处理请求时,主要就是要解析http请求,比如:uri,请求行等,然后再根据请求生成响应。下面看一下nginx处理的具体过程。 ...

2012-10-09 11:18:28

阅读数 8197

评论数 0

nginx源码分析(6)——建立连接

对于web server来说,必须能够监听到客户端的连接才能与之通信,这篇文章就看一下nginx是如何实现连接的建立。监听到新的连接实际上就是监听socket上的读事件,此时监听socket的已完成连接队列是非空的,可以非阻塞的调用accpet获取新到的连接。在nginx中每个socket都会被封...

2012-08-09 18:03:48

阅读数 5290

评论数 4

Nginx实现jsonp调用

通过jsonp实现js跨域时,需要通过url参数指定回调函数名,比如: > curl localhost/jsonptest?callback=cb123 > cb123({'name': 'kobe'});         下面就介绍如何在nginx中实现这一功能。     ...

2012-08-08 15:11:33

阅读数 5755

评论数 0

nginx源码分析(5)——监听socket初始化

在nginx源码分析(4)中,看到了nginx的事件模型,但其中没有介绍监听socket的初始化。而对于web server来说,需要通过监听socket来监听客户端的连接等。本篇将会具体介绍这方面的内容。还记得在前文介绍ngx_cycle_t结构时,它具有一个listening属性,是一个数组,...

2012-07-18 15:50:31

阅读数 9609

评论数 2

nginx源码分析(4)——事件模型

对于一个服务器来说,事件模型是至关重要的,nginx本身的高性能也要归功于其优秀的事件模型。一般地,nginx的事件模型是基于epoll的,而使用epoll需要调用epoll_create、epoll_ctl和epoll_wait三个函数。由于nginx本身的松耦合模块机制,这些函数的调用被隐藏在...

2012-07-12 23:05:27

阅读数 8296

评论数 1

nginx源码分析(3)——进程模型

原本计划这一篇的内容是配置文件的解析,不过为了连贯性,还是继续nginx初始化的过程。nginx的进程模型与大多数http服务器采用的模型是一样的,都是Master-Worker模型。Master进程负责处理外部信号,同时管理所有的Worker进程。而Worker进程就是用来处理连接的建立、请求和...

2012-07-11 17:05:24

阅读数 5148

评论数 0

nginx源码分析(2)——http模块的初始化过程

前一篇文章介绍了nginx的启动初始化过程,包括了所有模块的初始化过程,比如http模块、事件模块等。这里再详细介绍一下http模块的启动过程,还记得在前一篇文章中提到过ngx_conf_parse函数背后隐藏了大量的细节吗?这里就揭开这层神秘的面纱,去看看几个重要的http模块是如何初始化的。这...

2012-07-10 19:30:31

阅读数 11129

评论数 1

nginx源码分析(1)——启动过程

1. 重要的数据结构         1. ngx_module_t         nginx中所有模块的类型都是ngx_module_t类型的,定义了模块的一些属性。nginx是完全模块化的,所有的组件都是模块,从而实现了nginx的高度松耦合。同时,我们在进行nginx模块开发时,也离不...

2012-07-09 18:19:34

阅读数 7364

评论数 3

财经行情API架构优化实践

从3月份到5月份一直在做行情API的架构优化,在这个过程中遇到了很多问题,也尝试了很多的解决方案,但都没有寻找到一个最佳的方案,最后基于API的特点自己实现了一个基于共享内存的key-value存储touchdb。这里,和大家一起分享一下。 1. 行情API及旧架构介绍         先简单...

2012-07-04 11:46:49

阅读数 5695

评论数 0

使用ngx_lua构建高并发应用(2)

在之前的文章中,已经介绍了ngx_lua的一些基本介绍,这篇文章主要着重讨论一下如何通过ngx_lua同后端的memcached、redis进行非阻塞通信。 1. Memcached         在Nginx中访问Memcached需要模块的支持,这里选用HttpMemcModule,这个...

2012-03-01 13:17:15

阅读数 14300

评论数 2

使用ngx_lua构建高并发应用(1)

一. 概述         Nginx是一个高性能,支持高并发的,轻量级的web服务器。目前,Apache依然web服务器中的老大,但是在全球前1000大的web服务器中,Nginx的份额为22.4%。Nginx采用模块化的架构,官方版本的Nginx中大部分功能都是通过模块方式提供的,比如Htt...

2012-02-29 14:18:27

阅读数 56496

评论数 4

Nginx经验总结(持续更新)

1. post方法请求静态文件 默认情况下,web服务器都不允许post方法请求静态文件,会返回响应403 Not Allowed。但是有些时候确实有这种需求。可以通过配置文件来改变这种设置:在需要处理静态文件的location里这样配置即可, location /static/ { ...

2012-02-28 11:44:56

阅读数 11026

评论数 0

windows下Nginx和PHP的安装与配置

一.软件准备 1.Nginx:http://nginx.org/download/nginx-1.0.4.zip 2.php:http://windows.php.net/download/php-5.2.17-Win32-VC6-x86.zip 这里需要注意一下,如果使用Apache或Ngi...

2011-07-08 13:55:19

阅读数 2194

评论数 0

提示
确定要删除当前文章?
取消 删除