Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。----来源百度百科
Nginx常用功能:
1、反向代理:作为web服务器最常用的功能之一
这里我给来2张图,对正向代理与反响代理做个诠释,具体细节,大家可以翻阅下资料。
Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。
2、负载均衡
Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。
上3个图,理解这三种负载均衡算法的实现
Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
3、web缓存
Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理。
4、HTTP服务器(动静分离)
Nginx本身也是一个静态资源的服务器
当只有静态资源的时候,就可以使用Nginx来做服务器,同时现在也很流行动静分离,就可以通过Nginx来实现
动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来
动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路
nginx详解
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不间断运行,即使运行数个月也不需要重新启动
你还能够不间断服务的情况下进行软件版本的升级
(5)支持rewrite重写规则:Nginx使用pcre进行正则表达式匹配,根据请求域名、url的不同,将http请求分发给不同的后端服务器。
(6)内建健康检查功能:Nginx能够检测某台后端服务器是否宕机,不影响用户访问。