nginx介绍(出身及现状)
世界第二大web服务器软件,以高并发、低消耗著称,源自于俄罗斯,创建者 Igor(伊戈尔),2004年开源,最早以代理服务器的身份出现,2015成立nginx公司,2019年以6.7亿被F5 Networks公司收购。
特点及优缺点
Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。性能是 Nginx 最重要的考量,其占用内存少、并发能力强、能支持高达 5w 个并发连接数,最重要的是,Nginx 是免费的并可以商业化,配置使用也比较简单。基于名称和IP做虚拟主机;
支持keeplive;
支持平滑配置更新或程序版本升级;
定制访问日志,支持使用日志缓存以提高性能;
支持URL rewrite;
支持路径别名;
支持基于IP及用户的认证;
支持速率限制,并发数限制等;
优点
工作在七层之上,针对HTTP做分流策略,正则规则比haproxy更灵活。
对网络的稳定性依赖小
安装配置简单
高负载高并发低消耗
不仅能做代理,还可以做web服务器
还能缓存静态网页和图片
社区活跃,第三方模块非常多
缺点
适应范围较小,仅能支持http、https、Email协议。
对后端服务器的健康检查,只支持通过端口检测,不支持url来检测。
正向代理
介绍
正向代理:是由客户端直接向nginx代理服务器发送请求,然后再由nginx代理服务器指向网站服务器(原始服务器),然后是代理服务器和原始服务器进行通信获取内容再由nginx代理服务器返回给客户端,所以客户端是不知道原始服务器的地址的。但如果同时请求过多的话,可能引发堵塞。
举例
简单点说,有点像中间商,你想租房子,找中间商,中间商跟包租婆商量,完事后再由包租婆跟中间商交代然后中间商再将最后的结果返回给你。此办交易你是看不到包租婆的。你只知道有中间商这个人。
反向代理
介绍
这是应用非常多的场景,为后端服务器代理。接收客户端请求,根据负载均衡策略转发给后端多个上游服务器处理;然后再等待后端服务器返回请求响应,接收到后再返回给请求的客户端。
举例
再简单点比喻,去饭店吃饭,可以点几个菜,饭店也分别有好多个厨师 ,但是你作为顾客不用管哪个厨师给你做的菜,只用点菜即可,小二将你菜单中的菜分配给不同的厨师来具体处理,那么这个小二就是反向代理服务器。这后面还可以做负载均衡,所以现在一般搭建反向代理的较多。
负载均衡
轮询(rr)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,可以将down掉的服务器剔除。
加权轮询(wrr)
为服务器设置优先值,优先值越高,越先访问。
ip_hash
每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求总会落在一台服务器上处理,可以解决session问题。
url_hash
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。后台服务器为缓存的时候效率。