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 Extension
nginx sticky是nginx的module,可以实现基于cookie的负载均衡。 下载后,在编译安装nginx时,用--add-module选项,指到sticky所在目录。类似命令如下: ./configure --prefix=/usr/local/nginx-1.6.0 --add-module=...
"(五)prometheus 监控 nginx 服务"所需软件包其中之一:nginx-module-vts.tar.gz,大胆放心使用,不需要积分,只求浏览博客时留下您的评论和点赞,谢谢!
headers-more-nginx-module-0.34
fastdfs-nginx-module_master.zip正常
fastdfs-nginx-module_v1.16.tar.gz源码包,nginx支持fastdgs的插件
Nginx开发指南
解压之后安装如下: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=/...
最新版linux fastdfs-nginx-module-1.22.tar.gz
lua-nginx-module-0.10.13
nginx扩展工具,nginx的headers_more模块用于 添加、修改或清除 请求/响应头,该模块不是nginx自带的,默认不包含该模块,需要另外安装。幸运的是openresty默认包含了该模块,可以直接使用。 该模块主要有4个指令...
fastdfs 与nginx集成包
nginx模块开发教程,简述模块开发的方法
headers-more-nginx-module-0.30.tar.gz
nginx模块开发指南,nginx开发,入门,http模块等通讯协议。
nginx-rtmp-module-master源码
Nginx模块开发入门
亲测可用,一定要对应版本
fastdfs分布式文件系统搭建需要的插件,该插件用于编译nginx的安装,nginx添加的一个模块,用于http访问fastdfs资源。