❝ 随着前端变革,Nginx也成为了前端开发工程师必不可少应该具备的一项技能了,那nginx到底起的是吗作用? 其实Nginx一直跟我们息息相关,它既可以作为 Web 服务器,也可以作为负载均衡服务器,具备高性能、高并发连接等 ❞
1.负载均衡
❝ 当一个应用单位时间内访问量激增,服务器的带宽及性能受到影响,影响大到自身承受能力时,服务器就会宕机奔溃,为了防止这种现象发生,以及实现更好的用户体验,我们可以通过配置Nginx负载均衡的方式来分担服务器压力 ❞
当有一台服务器宕机时,负载均衡器就分配其他的服务器给用户,极大的增加的网站的稳定性 当用户访问web时候,首先访问到的是负载均衡器,再通过负载均衡器将请求转发给后台服务器
1.1 负载均衡的几种常用方式
- 轮询(默认)
// nginx.config
upstream backserver {
server 192.168.0.1;
server 192.168.0.2;
}
复制代码
- 权重weight
代码语言:javascript复制❝ 指定不同ip的权重,权重与访问比成正相关,权重越高,访问越大,适用于不同性能的机器 ❞
// nginx.config
upstream backserver {
server 192.168.0.1 weight=2;
server 192.168.0.2 weight=8;
}
复制代码
- 响应时间来分配
代码语言:javascript复制❝ 公平竞争,谁相应快,谁处理,不过这种方式需要依赖到第三方插件nginx-upstream-fair,需要先安装 ❞
// nginx.config
upstream backserver {
server 192.168.0.1;
server 192.168.0.2;
fair;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://backserver;
}
}
复制代码
1.2 健康检查
❝ Nginx 自带 ngx_http_upstream_module(健康检测模块)本质上服务器心跳的检查,通过定期轮询向集群里的服务器发送健康检查请求,来检查集群中是否有服务器处于异常状态 ❞
如果检测出其中某台服务器异常,那么在通过客户端请求nginx反向代理进来的都不会被发送到该服务器上(直至下次轮训健康检查正常)
基本例子如下