[230420] 简单了解 Nginx 服务器

1. 概述

Nginx 是一种 web 服务器,基于 rest 架构风格,以统一资源描述符 URI 或统一资源定位符 URL 作为沟通依据,通过 HTTP 协议提供各种网络服务。

优秀的设计给 Nginx 带来极大的稳定性:

  • Nginx 由 C 语言开发,是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris,AIX,Mac OS等操作系统上
  • Nginx 的使用基于事件驱动架构,使得其可以支持数以百万级别的 TCP 连接
  • 高度的模块化和自由如那件许可证使得第三方模块层出不穷

2. Nginx 的用途

Nginx 的有许多方面的用途:

  • Nginx 是一款自由的、开源的、高性能的 HTTP 服务器和反向代理服务器,它可以作为一个 HTTP 服务器进行网站的发布处理,也可以作为反向代理进行负载均衡的实现。
  • Nginx 也是一个 IMAP、POP3、SMTP 代理服务器
2.1 代理

代理:一个代表、一个渠道。

代理过程:被代理角色通过代理访问目标角色完成一些任务的过程。比如客人到 adidas 专卖店购买商品,则厂家就是被代理角色、专卖店是代理、客人是目标角色,任务便是售卖商品。

2.2 正向代理

正向代理:

  • 客户端非常明确要访问的服务器地址
  • 服务器只知道请求来自哪个代理服务器,而不清楚来自哪个具体的客户端
  • 正向代理屏蔽或隐藏了真实客户端的信息

1202586-20181211123717325-1261206014.png

正向代理的过程:

  • 正向代理,“它代理的是客户端,代客户端发出请求”,是一个位于客户端和原始服务器之间的服务器
  • 为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端
  • 客户端必须设置正向代理服务器,才能使用正向代理,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口

1202586-20181211121039404-1910765480.png

正向代理的用途:

  • 访问原来无法访问的资源,如 Google
  • 可以做缓存,加速访问资源
  • 对客户端访问授权,上网进行认证
  • 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
2.3 反向代理

反向代理:

  • 反向代理可以实现分布式的集群操作
  • 客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因此客户端不需要任何配置就可以访问。

反向代理的过程:

  • 反向代理,“它代理的是服务端,代服务端接收请求”,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。
  • 多个客户端给服务器发送的请求,Nginx 服务器接收到之后,按照一定的规则分发给后端的业务处理服务器进行处理

1202586-20180406175939873-925019958.png

反向代理的用途:

  • 保证内网的安全,通常将反向代理作为公网访问地址,web 服务器是内网
  • 负载均衡,通过反向代理服务器来优化网站的负载
2.4 项目场景

在真实的项目中,正向代理和反向代理可能会出现在同一个应用场景中:

  • 正向代理服务器代理客户端发出请求去访问目标服务器
  • 目标服务器是一个反向代理服务器,负责将任务分发给多台业务处理服务器

1202586-20180406180130452-1246060303.png

2.5 负载均衡

了解概念:

  • 负载量:客户端发送的、Nginx 反向代理服务器接收到的请求数量
  • 均衡规则:请求数量按照一定的规则进行分发到不同的服务器处理的规则
  • 负载均衡:将服务器接收到的请求按照规则分发的过程
    • 硬件负载均衡:成本高但数据的稳定性和安全性较好
    • 软件负载均衡:利用现有的技术结合主机硬件实现的一种消息队列分发机制

Nginx 支持的负载均衡调度算法:

  • weight轮询(默认,常用,具有HA功效!):接收到的请求按照权重分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,Nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。
  • ip_hash(常用):每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,这也在一定程度上解决了集群部署环境下 session 共享的问题(什么问题,不了解)。
  • fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是 Nginx 默认不支持 fair 算法,如果要使用这种调度算法,请安装 upstream_fair 模块。
  • url_hash:每个请求按访问的 url 的 hash 结果分配,每个请求的url会指向后端固定的某个服务器,可以在Nginx作为静态服务器的情况下提高缓存效率。同样要注意 Nginx 默认不支持这种调度算法,要使用的话需要安装 Nginx 的 hash 软件包。

参考:Nginx 相关介绍

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值