[TOC]
Nginx初探
常见服务器介绍
- Apache服务器
开源项目
优点:在各种开源的WWW服务提供工具中特性最全,运行速度最快,性能相对稳定,扩展功能丰富
缺点:使用进程为基础的结构。在对一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器 - Microsoft IIS
微软公司的Web服务器产品,同Windows Server一起发行。包含Gopher Server、FTP Server,并且可用于HTTP Server、FTP Server、NNTP Server、SMTP Server
优点:和Windows Server相结合,使网络应用服务器的管理、可用性、可靠性、安全性、性能和可扩展性大大增强
缺点:付费软件,部署成本高 - Tomcat服务器
开源项目,通常作为Apache的扩展部分,为运行JSP页面和Servlet提供服务,独立的Servlet容器是Tomcat的默认模式。它处理静态HTML的能力不如Apache服务器。在中小系统和并发访问用户不是很多的场合下使用,是开发和调试JSP程序的首选。
优点:开源,体积小,安装部署方便,系统资源占用率低,是主要的Servlet和JSP容器
缺点:轻量级服务器,无法满足复杂业务场景,也没有负责和丰富的功能 - Lighttpd服务器
来自德国的开源轻量级服务器
优点:专门针对高性能网站,提供了一套安全、快速、兼容性良好并且灵活的Web Server环境。同时,它具有非常低的内存开销、CPU占用率及模块丰富等特点,支持FastCGI、Output Compress、URL重写等绝大多数Apache具有的重要功能,是Apache的绝好替代者
缺点:Proxy功能支持不完善、对编码支持不完善等
Nginx的功能特性
Nginx服务器以其功能丰富著称于世。既可以作为HTTP服务器,也可以作为反向代理服务器或者邮件服务器;能够快速响应静态页面的请求;支持FastCGO、SSL、Virtual Host、URL Rewrite、HTTP Basic Auth、Gzip等大量使用功能;并且支持第三方功能模块的扩展
Nginx提供的服务:
- 基本服务:可以作为HTTP代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL等
- 高级服务:可以进行自定义配置,支持虚拟主机,支持URL重定向,支持网络监控,支持流媒体传输等
- 邮件代理服务:支持IMAP/POP3代理服务功能,支持内部SMTP代理服务功能
特点:高稳定、高性能、资源占用少、功能丰富、模块化结构、支持热部署
常用功能介绍
- 正向代理:
正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
正向代理的用途:- 访问原来无法访问的资源,如google
- 可以做缓存,加速访问资源
- 对客户端访问授权,上网进行认证
- 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
- 反向代理
反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
方向代理的用途:-
保证内网的安全,可以使用反向代理提供WAF功能,阻止web攻击
image -
保证内网的安全,可以使用反向代理提供WAF功能,阻止web攻击
image
-
HTTP代理和反向代理
Nginx服务器转为前端请求性能稳定,并且后端转发与业务配置相互分离,配置相当灵活。它支持判断表达式,通过正则表达式进行相关配置,可以实现根据不同的表达时尚,采取不同的转发策略。其次,它对后端返回情况进行了异常判断,如果返回结果不正常,则请求另一台主机,并且剔除返回异常的主机。还支持错误页面跳转功能
负载均衡
负载均衡,包括两个方面的含义:
- 将单一的重负载分担到多个网络节点上做并行处理,每个节点处理结束后将结果汇总返回给用户,这样可以大幅度提高网络系统的处理能力
- 将大量的前端并发访问或数据流量分担到多个后端网络节点上分别处理,这样可以有效减少前端用户等待响应的时间。Web服务器、FTP服务器、企业关键应用服务器等网络应用方面谈到的负载均衡问题,基本属于此含义。
Nginx服务器的负载均衡主要是对大量前端访问和流量进行分流,以保证前端用户的访问效率
Nginx服务器的负载均衡策略分为两大类:
内置策略(被编入Nginx内核,只需在Nginx服务器配置中设置参数即可):
- 轮询策略:将每个前端请求按顺序(时间顺序或者排列顺序)逐一分配到不同的后端节点上,对于出现问题的后端节点自动排除
- 加权轮训:在基本的轮训策略上考虑后端节点接受请求的权重,指定各个后端节点被轮询到的几率。主要用于后端节点性能不均的情况
- IP hash:将前端的访问IP进行hash操作,然后根据hash结果将请求分配给不同的后端节点。可看作一种特殊的轮询策略。通过Nginx的实现,每个前端访问IP会固定访问一个后端节点。这样做的好处是避免前端用户的session在后端多个节点上的共享的问题
扩展策略(不会编入Nginx内核,需要手动将第三方内核编译到Nginx内核中)
- url hash:形式上和IP hash相近,不同点在于IP hash对前端访问IP进行了hash操作,而url hash策略是对前端请求的url进行了hash操作。url hash策略的优点在于,如果后端有缓存服务器,它能够提高缓存效率,同时也解决了session的问题。缺点是如果后端节点出现异常,它不能自动排除该节点。后端节点出现异常会导致Nginx服务器返回503错误
- fair:Nginx通过后端节点对请求的响应时间判断负载情况,该模块将前端请求转发到一个最近负担最小的后台节点。
Web缓存
Nginx服务器的Web缓存服务主要由Proxy Cache相关指令集和FastCGI_Cache相关指令集构成。Proxy Cache主要用于在Nginx服务器提供反向代理服务时,对后端服务器的返回内容进行URL缓存;FastCGI_Cache主要用于对FastCGI的动态程序进行缓存。
第三方ngx_cache_purge也经常用到,主要用于清除Nginx服务器上指定URL缓存
网友评论