版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/50439078
Nginx和Nginx+的比较(上)
作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs
一、Nginx+介绍
Nginx和Nginx+都是Nginx官方的产品,两者的不同之处在于Nginx是开源的社区版,而Nginx+则是Nginx面向企业级的收费版。
Nginx+收费情况如下:对于单实例部署,每年缴费1900美元;而对于多实例的部署,则需要联系Nginx官方来协商报价。
Nginx+也提供了30天的免费试用,到期后仍需交费。
Nginx+只以二进制发行版提供,不提供源码。
Nginx+在Nginx开源社区版的基础上,增加了企业级的特性,比如:
- 全功能的HTTP和TCP负载均衡
- 高性能的反向代理
- 静态内容和动态内容的缓存和卸载
- 自适应流媒体教父音视频内容到任意设备
- 对应用敏感的健康检查和高可用性
- 提供仪表板或API方式的高级活动监控
- 高级监控和管理,提供对开发者友好的工具来管理和实时的变更
- 会话持久性
- 咨询服务
二、Nginx和Nginx+的比较
Nginx+具有一些Nginx社区版不具备的特性,包括:
1、高级HTTP和TCP负载均衡
在负载均衡算法方面,Nginx+增加了“最少时间”(Least Time)的负载均衡算法。“最少时间”算法即请求被分发到拥有最快响应时间和最少活动连接的服务器节点。
2、会话持久性
HTTP是一个无状态协议,故通常很多应用程序在本地存储终端的状态,而没法在负载均衡环境中共享状态。因为在服务器节点间实现客户端的状态共享意味着速度很慢,实现也很麻烦,故最常见的做法是把同一个终端负载均衡到同一个节点,那么就无需在各节点间共享和同步其状态信息了。
Nginx+可以跟踪用户的会话,将终端用户的请求分发给正确的upstream服务器节点。Nginx+提供了三种方法来识别用户的会话:
- 插入跟踪信息到请求数据中
采用sticky cookie指令:
upstream backend {
server webserver1;
server webserver2;
sticky cookie srv_id expires=1h domain=.example.com path=/;
}
- 在会话中检测请求
采用sticky learn指令:
upstream backend {
server webserver1;
server webserver2;
sticky learn create=$upstream_cookie_sessionid
lookup=$cookie_sessionid
zone=client_sessions:1m
timeout=1h;
}
- 跟踪请求中的特定数据
采用sticky route指令:
upstream backend {
server webserver1 route=a;
server webserver2 route=b;
# $var1 and $var2 are run-time variables, calculated for each request
sticky route $var1 $var2;
}