`
russelltao
  • 浏览: 157701 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

nginx module 开发谈(1)

 
阅读更多

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开发过程中的一些心得。

分享到:
评论

相关推荐

    nginx module开发指南(中文版)

    ### Nginx Module 开发详解 #### 模块的角色与功能 Nginx 的模块扮演着不同的角色,这些角色共同确保了服务器能够高效且灵活地处理 HTTP 请求。 1. **Handlers** (处理器): 这些模块负责处理 HTTP 请求并构造响应...

    fastdfs-nginx-module-1.24

    《FastDFS-Nginx-Module 1.24:高效文件服务器集成详解》 FastDFS-nginx-module 1.24 是一个针对 FastDFS 文件系统的 Nginx 模块,它使得 Nginx 可以无缝地与 FastDFS 集成,提供了高效的文件上传、下载服务。这一...

    nginx-module-vts.tar.gz

    1. **安装Nginx-Module-VTS**:首先,解压`nginx-module-vts.tar.gz`,然后按照其README文档指示编译并安装Nginx,确保Nginx配置文件中加载了该模块。 2. **配置Nginx**:在Nginx的配置文件中,为每个需要监控的...

    fastdfs-nginx-module_v1.16.tar.gz源码包,nginx支

    标题中的"fastdfs-nginx-module_v1.16.tar.gz"是一个开源项目,它是一个用于Nginx服务器的模块,旨在使Nginx能够与FastDFS文件存储系统无缝集成。FastDFS是一个轻量级的开源分布式文件系统,适用于互联网和企业内部...

    lua-nginx-module-0.10.13

    Lua-Nginx-Module由OpenResty团队开发,旨在提供一种轻量级、高效且易于使用的机制,使开发者能够在Nginx内部处理复杂的业务逻辑,如动态内容生成、流量控制、API网关等功能,从而避免了传统的CGI或FastCGI等模型...

    fastdfs-nginx-module-正版V1.19-亲测可用 .zip

    《FastDFS-Nginx-Module V1.19:构建高效稳定的文件服务器系统》 FastDFS-Nginx-Module V1.19 是一个专为Nginx设计的FastDFS扩展模块,它允许Nginx直接与FastDFS进行交互,从而实现高效的文件上传和下载服务。...

    lua-nginx-module-master.zip

    总之,"lua-nginx-module-master.zip"包含的lua-nginx-module是将Lua语言的强大功能引入Nginx的关键,它为开发人员提供了一种灵活且高效的方式,以应对复杂的Web服务场景。正确理解和使用这个模块,可以显著提升...

    headers-more-nginx-module-0.34

    《headers_more_nginx_module_0.34:深入解析Nginx扩展模块的增强功能》 在Web服务器领域,Nginx以其高性能、高并发能力而广受赞誉。而headers_more_nginx_module作为Nginx的一个扩展模块,进一步提升了其在处理...

    fastdfs-nginx-module-1.22.zip

    《FastDFS-Nginx-Module 1.22:构建高效Web服务器的融合解决方案》 在互联网服务领域,Nginx以其高效的性能和强大的反向代理能力被广泛应用于Web服务器,而FastDFS作为轻量级的分布式文件系统,能够有效地解决...

    fastdfs-nginx-module-1.20.zip

    本文将详细解析如何将FastDFS的Nginx模块(fastdfs-nginx-module-1.20.zip)安装并配置到Nginx中,实现高效、稳定的服务。 首先,确保你已经安装了FastDFS和Nginx的基础环境。FastDFS提供了数据存储和文件管理的...

    fastdfs-nginx-module_master.zip

    总结来说,`fastdfs-nginx-module-master.zip`提供的FastDFS-nginx-module是实现Nginx与FastDFS集成的重要桥梁,它简化了文件服务的部署和管理,提高了文件服务的性能。通过理解和掌握这个模块的使用,开发者可以...

    fastdfs-nginx-module1.20

    2. **URL路径格式**:FastDFS-Nginx-Module识别特定的URL格式,例如`/group1/M00/00/00/wKgFQFwGz0iAYZjWAAJZo6s2D7840.jpg`,其中`group1`是文件组名,`M00`是存储节点标识,`00/00`是文件所在的目录,`wKgFQFwGz0...

    redis2-nginx-module-0.15

    Redis2-NGINX-Module 是由 OpenResty 团队开发的,OpenResty 是一个基于 NGINX 的高性能 Web 和反向代理服务器,它包含了大量的 LuaJIT 脚本支持,能够进行动态编程。通过这个模块,开发者可以在 NGINX 配置中直接...

    echo-nginx-module-0.58.tar.gz

    1. 输出控制:echo-nginx-module允许我们在Nginx配置中动态地输出文本、变量或者表达式,这对于调试和测试是非常有用的。例如,我们可以输出请求头、请求体、响应时间等信息。 2. 响应延迟:模块提供了延迟响应的...

    nginx-sticky-module-1.25.zip

    nginx sticky是nginx的module,可以实现基于cookie的负载均衡。 下载后,在编译安装nginx时,用--add-module选项,指到sticky所在目录。类似命令如下: ./configure --prefix=/usr/local/nginx-1.6.0 --add-module=...

    Nginx Module Extension

    通过上述分析,《Nginx Module Extension》这本书不仅深入介绍了Nginx的核心特性,还提供了详细的自定义模块开发指南。对于希望深入了解并充分利用Nginx强大功能的专业人士来说,这是一本非常有价值的参考资料。无论...

    nginx-module-vts-0.1.18.tar.gz

    解压之后安装如下:mv nginx-module-vts-0.1.18 /usr/local/ yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel cd /usr/local/nginx/nginx-1.13.7 ./configure --add-module=/...

    fastdfs-nginx-module.zip

    在这个场景下,`fastdfs-nginx-module.zip`扮演着关键的角色,它是FastDFS与Nginx之间的重要桥梁。 FastDFS通常与Nginx结合使用,Nginx作为一个强大的反向代理和负载均衡服务器,负责接收HTTP请求,然后将这些请求...

    echo-nginx-module-0.61.tar.gz

    echo-nginx-module是Nginx的一个扩展模块,由Philipp Kewisch(@agentzh)开发,它提供了一系列用于处理HTTP响应体的指令,极大地丰富了Nginx的输出处理能力。echo-nginx-module的主要目标是支持HTTP服务器内部的...

    lua-nginx-module-0.10.9rc7

    1. **获取源码**:从官方仓库或镜像站点下载lua-nginx-module-0.10.9rc7的压缩包,并解压到工作目录。 2. **编译Nginx**:在编译Nginx时,需要将lua-nginx-module源码路径作为参数传递给`--add-module`选项。同时,...

Global site tag (gtag.js) - Google Analytics