目前越来越多的互联网服务器市场被nginx服务器所占领,nginx也变得越来越流行了,那么为何流行,为何成为了主流,在下文结合其他web服务器进行简单的说明。
主流的web服务器有web IIS,apache,lighttpd,nginx,Tomcat和Jetty,当然肯定还有一些其他的我知识面比较窄,没有涉及过。
为什么使用nginx:
WEB IIS是一款运行在windows下面的服务器,而windows作为服务器无论是在性能上面,还是在稳定性上面相比于运行在linux上面的服务器都有先天性的不足,不具有可比性。因此在入境动不动就是成千上万特别是双11,双12这样特殊的日子里面,对高并发要求比较高的情况看下,IIS就被放弃了。
Apache是总所周知的服务器了,可以说是服务器中的元老也不为过,可是为何Apache被冷落了呢,我想主要是基于Apache老了,Apache出现的时候那个时候互联网行业和现在完全不具有可比性,并发访问量都很少,Apache默认同时支持256个Http Request,当然可以通过修改并发访问数,不过据说不能超过3K(没做过实验不知道是不是3K),就这一条在如今的电商时代就秒杀它了。第二个Apache可以说是重量级服务器,在如今内存资源很珍贵的情况下,通过fork进程来达到并发访问,是一种不可取的方式。
Tomcat和Jetty,是完全基于JAVA开发的服务器,而且先天上就是完完全全的重量级服务器,这样也导致了这两种服务器和Nginx完全不具有可比性了。
Lighttpd服务器是一种轻量级的服务器,这种服务器也是和nginx一样是同样基于select/epoll/kqueue的全异步事件驱动模式,可以轻松达到高并发和不惧怕慢连接。从大体上,个人感觉nginx和lighttpd都是很好的web服务器,欧美的喜欢lighttpd,国内偏向于nginx的更加多些。不过细微的差别:
1.nginx是完全抛弃了线程的,lighttpd启动的时候会有辅助线程,存在竞争,这样会导致lighttpd的运行性能比nginx稍微慢些
2.lighttpd会加载动态so库,而nginx是完全静态联编的,所以执行效率会慢些
3.nginx的epoll的ET(边缘触发)的,lighttpd是LT(水平触发)的
综合以上几点nginx性能或许更好一些。
nginx的优异性能:(简单引用淘宝大牛总结的7大特点)
1.更快
2.高扩展性
3.高可靠性
4.低内存消耗
5.单击支持10万以上的并发连接,不过可以不止,主要和内存有关
6.热部署,master进程和worker进程分离,可以不停用nginx的前提下,升级nginx
7.最自由的BSD许可协议
nginx安装环境:
1.需要内核linux2.6以上 (通过uname -a查看linux版本)
2.需要GCC编译器,nginx需要自己编译生成二进制文件,不直接提供,不过我在之前的文章中提到过ubuntu中直接安装nginx模块
3.PCRE库(兼容正则表达式库),如果你需要在nginx.conf中使用正则表达式
4.zlib库(用于对HTTP包的内容做gzip的压缩),如果你在nginx.conf中配置了gzip on
5.open ssl库,如果我们不止支持HTTP还需要更安全的SSL协议上使用HTTP
具体安装和部署请参考之前的nginx第一篇