1.什么是nginx?
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务
Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的
第一个公开版本0.1.0发布于2004年10月4日
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名
2011年6月1日,nginx 1.0.4发布
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行
其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好
中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝
2.nginx的优点?
Nginx 可以在大多数 Unix Linux OS 上编译运行,并有 Windows 移植版。
Nginx 的1.4.0稳定版已经于2013年4月24日发布
一般情况下,对于新建站点,建议使用最新稳定版作为生产版本,已有站点的升级急迫性不高
Nginx 的源代码使用 2-clause BSD-like license。
Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性
- (1)适用于高并发
在连接高并发的情况下,Nginx是Apache服务不错的替代品
Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一
能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型 - (2)可以做负载均衡服务器和HTTP服务器
Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务
也可以支持作为 HTTP代理服务对外进行服务,Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多
处理静态文件,索引文件以及自动索引,打开文件描述符缓冲
无缓存的反向代理加速,简单的负载均衡和容错
FastCGI,简单的负载均衡和容错
模块化的结构,包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter
如果由 FastCG或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待
支持 SSL 和 TLSSNI - (3)代码的特点
Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统
包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows
Nginx有自己的函数库,并且除了zlib、PCRE和OpenSSL之外,标准模块只使用系统C库函
而且,如果不需要或者考虑到潜在的授权冲突,可以不使用这些第三方库 - (4)可以作为代理服务器
作为邮件代理服务:Nginx 同时也是一个非常优秀的邮件代理服务
(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验
Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务
Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动
你还能够不间断服务的情况下进行软件版本的升级
3.Nginx能做什么?
- (1)反向代理
反向代理应该是Nginx做的最多的一件事了
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器
并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器
简单来说就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器
而代理服务器能被外部网络访问的同时又跟真实服务器在同一个网络环境,当然也可能是同一台服务器,端口不同而已 - (2)负载均衡
负载均衡也是Nginx常用的一个功能
负载均衡其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等
从而共同完成工作任务,简单而言就是当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处理
负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡
而Nginx目前支持自带3种负载均衡策略,还有2种常用的第三方策略 - (3)HTTP服务器(动静分离)
Nginx本身也是一个静态资源的服务器
当只有静态资源的时候,就可以使用Nginx来做服务器,同时现在也很流行动静分离,就可以通过Nginx来实现
动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来
动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路 - (4)正向代理
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器
为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器)
然后代理向原始服务器转交请求并将获得的内容返回给客户端,客户端才能使用正向代理