初识Nginx

 Nginx 作为业内最常用的代理服务器,较为详细地记录了用户的访问数据,而且在分布式部署性能优化方面也发挥了积极的作用,Nginx 是不得不提的一个中间件。

Nginx 重要的两个概念:

代理:

  正向代理的特点是你非常清楚地知道你要去哪儿,访问什么服务器,但服务器并不关心你的出发地是哪里,它只知道你从哪个代理服务器过来。

  反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

  反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。

负载均衡
  但是随着用户体量的上升,一台服务器并不能支撑现有用户的访问,那你就会考虑使用两台或者多台服务器

  1.轮询:

    也就是使用平均分配的方式,将每个请求依次分配到配置的后端服务器上。除非有服务宕机,才会停止分发。代码如下:

upstream localhost {

//分发到各应用服务

      server  127.0.0.1:7070;

      server  127.0.0.1:7071;

    }

    server{

//Nginx核心监听端口

        listen 8012;

        server_name localhost;

        location / {

                proxy_pass         http://localhost;

                proxy_set_header   Host             $host;

                proxy_set_header   X-Real-IP        $remote_addr;

                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

        }

}

  2.权重

    权重即配置轮询的比重,在真实的互联网场景下,很多服务器上都会配置多个应用,这样会导致每台服务器的资源占用不一致,所以在分布式部署配置下也需要注意这一点

    一:相对空闲的机器可以多配置访问比例。

    二:比较繁忙的机器可以少配置一些。

    其中 ip1、ip2 以及 port 需要配置你实际的部署 ip 和 port。

  

     upstream test {

         server ip1:8080 weight=9;

         server ip2:8081 weight=1;

}

  3.ip_hash

    但上面两种配置方式在电商场景下有个很常见的问题,比如你登录了一个网站,登录信息已经保存到 a 机器,但当你做后续操作时的请求会到 b 机器,那么就获取不到你原    来登录的信息,此时你就需要重新登录了。这样的情况是用户肯定不能接受的,ip_hash 模式就可以很好地解决这个问题,让每次访问能基于同一用户访问固定的服务器。  

    ip_hash 模式配置示例如下:

  
    upstream test {

    ip_hash;

    server localhost:8080;

    server localhost:8081;

}

 





  

 

posted @ 2021-07-02 14:01  安好_世界  阅读(45)  评论(0)    收藏  举报