顺便聊一下前端Nginx那些事

❝ 随着前端变革,Nginx也成为了前端开发工程师必不可少应该具备的一项技能了,那nginx到底起的是吗作用? 其实Nginx一直跟我们息息相关,它既可以作为 Web 服务器,也可以作为负载均衡服务器,具备高性能、高并发连接等

1.负载均衡

❝ 当一个应用单位时间内访问量激增,服务器的带宽及性能受到影响,影响大到自身承受能力时,服务器就会宕机奔溃,为了防止这种现象发生,以及实现更好的用户体验,我们可以通过配置Nginx负载均衡的方式来分担服务器压力

当有一台服务器宕机时,负载均衡器就分配其他的服务器给用户,极大的增加的网站的稳定性 当用户访问web时候,首先访问到的是负载均衡器,再通过负载均衡器将请求转发给后台服务器

1.1 负载均衡的几种常用方式

  • 轮询(默认)
// nginx.config
upstream backserver {
    server 192.168.0.1;
    server 192.168.0.2;
}
复制代码

  • 权重weight

❝ 指定不同ip的权重,权重与访问比成正相关,权重越高,访问越大,适用于不同性能的机器

// nginx.config
upstream backserver {
    server 192.168.0.1 weight=2;
    server 192.168.0.2 weight=8;
}
复制代码

  • 响应时间来分配

❝ 公平竞争,谁相应快,谁处理,不过这种方式需要依赖到第三方插件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反向代理进来的都不会被发送到该服务器上(直至下次轮训健康检查正常)

基本例子如下

正文完