Nginx既可以作为HTTP服务器,也可以作为反向代理服务器或者邮件服务器。它能够快速响应静态页面的请求,支持FastFCGI/SSL(Secure Sockets Layer 安全套接字协议)/Virtual Host/URL/Rewrite/GZip等大量功能,并且支持更多的第三方模块的扩展。
从基本的功能服务上而言,可以将Nginx的功能分为三块,分别是HTTP服务,高级HTTP服务和邮件服务三类。
基本HTTP服务:
1、处理静态文件(如HTML静态网页及请求),处理索引文件及支持自动索引;
2、打开并自行管理文件描述缓存符;
3、提供反向代理服务,并且可以使用缓存加速反向代理,同时完成简单的负载均衡和容错;
4、提供远程FastCGI服务的缓存机制,加速访问,同时完成简单的负载均衡和容错;
5、使用Nginx的模块化提供过滤器功能,Nginx基本过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSI以及图像缩放等等;
6、支持HTTP下的安全套接层套接协议SSL。
高级HTTP服务:
1、支持给予名称和IP的虚拟主机设置;
2、支持HTTP/1.0中的KEE-Alive模式和管线(PipeLined)模型连接;
3、支持重新加载配置以及在线升级时,无须中断正在处理的请求;
4、自定义访问日志格式、带缓存的日志写操作以及快速日志轮转;
5、提供3xx-5xx错误代码重定向功能;
6、支持重写(Rewrite)模块扩展;
7、支持网络监控,包括基于客户端IP地址和HTTP基本认证机制的访问控制、速度限制、来自同一地址的同时连接数或请求数限制等等。
8、支持HTTP DAV模块,从而为HTTP DAV提供PUT、DELETE、MKCOL、COPY以及MOVE方法。
9、支持流媒体传输,如FLV和MP4。
邮件代理服务器:作为邮件代理服务器其实是最早开发这个产品的目的之一,它支持IMAP/POP3代理服务功能,支持内部SMTP代理服务功能。
1、支持使用外部HTTP认证服务器重定向用户到IMAP/POP3后端并支持IMAP认证方式(LOGIN、AUTHLOGIN、PLAIN、CRAM-MD5)和POP3认证方式(USER/PASS、APOP、AUTHLOGIN、PLAIN、CRAM-MD5);
2、支持使用外部HTTP认证服务器认证用户后重定向连接内部SMTP后端,并支持SMTP认证方式(AUTHLOGIN、PLAIN、CRAM-MD5);
3、支持邮件代理服务下的安全套接层协议SSL;
4、支持纯文本通信协议的扩展协议STARTTLS。
Nginx常用功能:
1、HTTP代理和反向代理:
代理服务:指内部网络对Internet发出连接请求,需要制定代理服务将原本直接传输至Web服务器的HTTP发送至代理服务器中。换句话来说,代理服务就是网络信息的中转站。代理服务器作为浏览器与Web服务器之间的另一类服务器,配备代
理服务器,浏览器无需直接至Web服务器获取网页,只需向代理服务器发出所需的请求,由代理服务器传送给访问者所需的浏览器。
HTTP代理:HTTP功能支持“直接连接”和通过”HTTP代理“形式的连接,直接连接不用多说,HTTP 代理指将采用HTTP访问的数据,通过第三方中转的行为。
反向代理:代理服务器接受客户端的网络访问连接请求后将请求有策略的转发给网络中实际工作的业务服务器,并将从业务服务器处理的结果,返回给网络上发起连接请求的客户端。
反向代理的优点:
1)提高了内部服务器的安全性:
外部网络用户通过反向代理访向内部服务器,只能看到反向代理服务器的IP地址和端口号,内部服务器对于外部网络来说是完全不可见。而且反向代理服务器上没有保存任何的信息资源,所有的网页程序都保存在内部服务器上,对反向代理服务器的攻击并不能使真的网页信息系统受到破坏;
2)加快了对内部服务器的访问速度;
3)节约了有限的IP资源。
2、负载均衡:
负载均衡一般包括两重含义,一方面指将单一的重负载分担到多个网络节点上做并行处理,每个节点处理结束后将结果汇总并返回给用户,这样可以大幅提高网络系统的处理能力;另一方面是指将大量的前端并发访问或数据流量分担到多个后端网络节点上分别进行处理,这样可以有效的减少前端用户等待响应的时间。通常情况下,WEB服务器、FTP服务器等网络应用方面谈到的负载均衡问题,基本属于后一方面。因此,Nginx服务器的负载均衡主要时对大量的前端访问进行分流,以保护前端用户的访问效率,提高使用体验。
Nginx的负载均衡策略一般可以划分为两大类,分别是内置策略和扩展策略。
内置策略主要包含轮询、加权轮询和IP Hash三种方法,扩展策略主要通过第三方模块使用,本文主要将一下内置策略。
轮询策略:轮询时指将每个前端请求按顺序(这里可以时时间顺序或排列次序)逐一分配到不同的后端节点上,对于出现问题的后端节点自动排除。
加权轮询策略:在基本轮询策略上考虑后端各个节点接受请求的权重,指定各个后端节点被轮询到的概率。加权轮询主要用于后端节点性能不均的情况,根据后端节点的实际情况,我们可以在Nginx服务器的配置文件中调整权重值,使得整个网络对前端请求达到最佳的响应能力。
IP Hash策略:将前端的访问IP进行Hash处理,然后根据Hash结果将请求分配到不同的后端节点,这种策略也可以看成是一种特殊的轮询策略。通过Nginx的实现,每个前端的访问IP会固定访问一个后端节点,这样做得好处是避免了考虑前端用户的Session在后端多个节点上共享的问题。
3、WEB缓存
Nginx服务器从0.7.48版本开始支持缓存功能,它的缓存服务主要有Proxy_Cache相关指令集和FastCGI_Cache相关指令集构成。
Proxy_Cache:主要用于在Nginx服务器提供反向代理时,对后端源服务器的返回内容进行URL缓存;
FastCGI_Cache:主要用于对FastCGI的动态程序进行缓存。
第三方模块ngx_cache-purge:主要用于清除Nginx服务器上指定的URL缓存。