nginx高性能web服务详解
1.1nginx简介
Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 邮件代理服务器。由 Igor Sysoev 于2004年首次发布,其设计目标是解决 C10K 问题,即在一台服务器上同时处理一万个并发连接。Nginx 以其高并发处理能力、低资源消耗和模块化设计而闻名,广泛应用于 Web 服务器、反向代理、负载均衡等场景。
随着信息数据的不断增长及用户体验需求增高:技术关心三个方面:
- 服务器自身处理性能(信息数据,云计算与大数据理论等工作)
如何更快处理与响应客户端与web服务器之间的问题
- 服务器的稳定性
如何保证web服务器在大量并发请求中任然进行保持稳定运行(也就是我们所说的服务器、网站等不宕机),产生问题的时候能够进行有效的预防,运行过程中进行减少系统平台资源的压力等问题
- web服务器的定制特性
部署迅速,快速增加删除与配置功能
主流的web服务器
Apache、Microsoft IIS,Sun、Nginx、Tomcat、Lighttpd等
apache:apache web服务器在开源的www服务所提供的工具在特性最全并且运行速度最快。缺点是apache设计一进程的基础结构,导致apache处理器环境下降。
tomact:一般应用在中小型系统和并发访问用户数量少的场合下使用。缺点是tomact处理html页面功能不如apache服务器,不能满足复杂的业务,tomact体积小,安装与部署方便,系统占用率低
nginx:可以做htpp服务器,反向代理,邮件服务器,快速相应静态页面,支持FastCGI、SSL、Virtual Host、URL Rewrite、HTTP Basic Auth、Gzip等大量使用功能;并且支持更多的第三方功能模块的扩展。
nginx版本分为:
开发版,稳定版,最新版;
HTTP代理和反向代理
nginx服务器提供反向代理服务,转发前端请求性能稳定,向后端转发业务支持相互分离,配置灵活
支持正则表达式,后端返回情况做异常判断,结果若不正常,重新请求另外一台主机,自动替换异常主机,并且支持错误页面跳转功能
负载均衡
负载均衡:将单一的重负载分担多个网络节点进行处理,将每一个节点处理结束后的结果汇总返还给用户,提高网络系统处理能力;另外一个,将大量前端请求并发访问或数据流担到多个后端节点分别处理,减少用户等待时间。
nginx负载服务器:对大量前段访问和流量进行分流,保证前端用户访问效率
nginx负载策略
内置策略:轮询,加权轮询,iphash
默认会被编译到nginx内核中
扩展策略:url hash,fair 模块编译到nginx中
不会编译到nginx内核,需要手动将第三方
轮询:每个前端请求按照时间顺序,或者策略进行分配到不同的后端节点,若后段节点有问题将自动排除。
加强轮询:因为后端节点请求的权重,指定后端节点轮询的概率,用于后端性能不均的情况。
ip hash策略,将前端访问的IP进行hash操作,将hash结果分配到不同的后端节点,通过nginx实现,每一个前端访问访问ip会固定访问后端节点,避免前端用户的session在后端多个节点上的共享
扩展策略url hash形式上与ip hash类似,不同之处在于ip hash策略是对前端用户ip进行了hash操作;URL hash是若后端有缓存服务器,提高缓存效率,解决session问题;缺点是,解决了后端节点异常,不能自动排除节点.后端节点出现异常,nginx服务器返回503的错误
扩展fair模块:该模块将前端请求转发到负载最小的后端节点,nginx通过后端节点对请求的相应时间来判断负载情况;相应时间短的节点负载轻;得出结果就,nginx负载请求转发到选中的负载最轻的几点上
web缓存
nginx服务器孩子吃类似squid缓存功能;nginx服务器的web服务器主要由proxy_cache指令(nginx服务器提供反向代理,对后端原服务器返回内容进行URL缓存),fastcgi_cache指令(用于fastcgi动态程序进行缓存)构成;第三方ngn_cache_purge模块(用于清除ngijx服务器上指定的URL缓存)
nginx服务器的多核CPU调度,性能比suid更好,因为nginx不仅模块多,使nginx服务器同时作为负载均衡器和web缓存服务器来进行使用!