nginx module 开发谈(1)

原创 2010年05月31日 14:21:00

nginx是什么?可能很多人不是很了解,除非是做WEB服务器开发的朋友才可能涉猎,而且如果不懂C语言,又或者对WEB SERVER性能要求不高,也是没必要去研究它的。


说到这里,大家想必已经知道,nginx就是一个高性能的WEB SERVER,它的工作就像apache, tomcat一样。那么已经有apache这样的成熟产品了,nginx又有何存在必要呢?下面说下它的特点,各位就明白为何nginx在世界WEB服务里占有相当大的份额了。

1、nginx支持linux的epoll,以及其他常见OS的高性能IO处理方式。
2、nginx用纯C写成。
3、nginx核心代码全部用事件触发机制完成。
4、nginx是跨平台的。

 

大家从这4个主要特点,应该可以想见nginx到底是怎么玩的了吧?

第1点很清楚,nginx可以很轻松的支持2,3万个并发连接,这个是epoll等模式先天支持的,还能CPU占用率超低。
第2点可以想见,nginx是高性能的。C语言的高效谁不知道呢?呵呵,读它的代码也是相当累,如果想去写nginx的module,自然更累,下面会详述。
第3点很重要,nginx全部用事件触发写成,实际用到的,也就是epoll提供的一些网络IO事件的触发处理。这点是WEB开发者在写自己的module时,实现高性能web服务的关键。
第4点并不重要,因为写web的人都是做服务的,大家大多都是在免费的LINUX上玩的,没人会用nginx在windows上跑吧?如果在windows上跑,何必选开发难度大多了的nginx?所以这点不提。不过这一条让大家在开发起来很不爽,为了与nginx代码风格统一,不得不用大量的nginx封装好的用来跨平台的函数,比如ngx_memcpy之类。

 

解读完这四点,一个有经验的程序员应该明白何种情形应该选用nginx了吧?如果一个java小团队,对服务的并发能力要求不高,又或者机器巨多,自然不需要去选择开发成本较高的nginx了。而做习惯大规模高并发SERVER开发的同志们,则会心生疑惑,nginx的好处还有什么?上面的这些优点,完全可以自己写个server实现,要nginx何用?我觉得,如果是做WEB SERVER,还是需要nginx的。
nginx实际封装了基本的WEB SERVER功能,所以,首先它有良好的网络IO处理系统,还有稳定的HTTP协议状态机分析,内存池,进程间通讯,线程管理,并提供了基本的配置文件,LOG系统。在其上做不是特别复杂的WEB应用,还是很有优势的,至少可以上application开发者不用花太多的精力在较底层的协议上去。

 

粗略介绍完nginx,大家有何感想?估计有很多人会打算详细研究下它吧?
但nginx最大的不爽之处,就是资料极少,网上能搜到的文档就那么几份,如果不做module开发,那是足矣,可是如果有自己业务的特殊需求,并且希望按照nginx的设计理念去非阻塞化所有操作,把性能最大化,则必须边看源码边调试了,连蒙带猜,呵呵。
我就经过了这个痛苦过程,下面就给大家分享下nginx的module开发过程中的一些心得。

在vb组件内调用excel2000实现GIF饼图

在vb组件内调用excel2000实现GIF饼图 http://www.tongyi.net    点击:405   在vb组件内调用excel2000实现GIF饼图  当我第一次使用excel的时候...
  • gnuljf
  • gnuljf
  • 2001-05-26 14:32:00
  • 1074

一个低级Illegal instruction错误的定位--忽略编译期警告就得加倍偿还

这个问题是我在开发心跳服务器时的一个笔误,其实错误非常的低级浅显,特别写篇文章是想告诉大家,编译期的警告是非常重要的!由于项目代码量大,编译期信息很多,我在忙于联调时就悲催的忽视了一条编译期警告信息,...
  • russell_tao
  • russell_tao
  • 2013-06-25 17:19:02
  • 31667

API的接口变迁

最近前端团队对于目前API接口的不满开始增多,所以我也借此重新理一下我们的API接口。API没有什么完美的设计理念和原则,只有最适合当下的设计。这个最适合包括:当前使用的技术架构、团队规模、团队成员技...
  • russell_tao
  • russell_tao
  • 2017-05-29 12:06:32
  • 1028

<em>nginx</em>模块开发指南(<em>中文</em>)

<em>Nginx</em>模块参考手册<em>中文</em>版本.pdf 立即下载 上传者: zxhread 时间: 2010-02-08 综合评分: 0 积分/C币:3 <em>nginx</em> <em>module</em>开发指南(<em>中文</em>版) 立即下载 上传者: ...
  • 2018年04月11日 00:00

nginx-upsync-module模块安装

1:下载对应安装包nginx-upsync-module对nginx的版本有相关要求 我们这里采用的是1.8x的版本 wget http://nginx.org/download/nginx-1...
  • tianhua79658788
  • tianhua79658788
  • 2017-11-09 11:45:32
  • 429

Emiller的Nginx模块开发指南中文版

原文地址:https://code.google.com/p/emillers-guide-to-nginx-module-chn/wiki/NginxModuleDevGuide_CHNEmille...
  • pingD
  • pingD
  • 2016-03-29 17:08:24
  • 923

Nginx模块开发之最简单的Hello模块

nginx模块开发并不是那么容易, 从行数上来讲, 淘宝给出的tengine给出的那个所谓hello模块的长度也到了245行, 要想真正独立写出这么多代码, 对于我来说是非常难的. 245行, ...
  • liwf616
  • liwf616
  • 2016-05-30 13:53:12
  • 3525

<em>Nginx</em> <em>Module</em> Extension.pdf

<em>nginx</em> <em>module</em>开发指南(<em>中文</em>版) 立即下载 上传者: lvxin_1986 时间: 2012-06-11 综合评分: 0 积分/C币:3 <em>Nginx</em> <em>Module</em> Extension 立即下载 上传者: 狒狒...
  • 2018年04月09日 00:00

nginx log 中文

nginx log 中文
  • mailjoin
  • mailjoin
  • 2018-03-26 11:07:40
  • 27

7. ubuntu 16.04 LTS 安装模块儿fastdfs-nginx-module

在安装fastdfs-nginx-module 之前,首先服务器应该正确安装了Nginx , 并清楚地知道nginx 安装后的目录位置.ubuntu 下安装Nginx 可参考笔者的另一篇博客    ,...
  • zgf19930504
  • zgf19930504
  • 2016-07-12 19:22:36
  • 1462
收藏助手
不良信息举报
您举报文章:nginx module 开发谈(1)
举报原因:
原因补充:

(最多只允许输入30个字)