Nginx简单介绍

Nginx 是一款自由的、开源的、高性能的 HTTP 服务器和反向代理服务器;同时也是一个 IMAP、POP3、SMTP 代理服务器;是个轻量级的高并发服务器。

代理服务器概念(proxy)

N-UNCOUNT If you do something by proxy, you arrange for someone else to do it for you. 代理权
客户端⇄代理服务器⇄目标服务器

二、正向代理服务器

用户知道目标服务器地址(正向代理服务器最主要特点),但由于网络限制等原因,无法直接访问。这时候需要先连接代理服务器,然后再由代理服务器访问目标服务器。

1580818751(1)

  • 在配置上,客户端必须配置正向代理服务器服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端
  • 客户端和代理服务器在同一环境中

正向代理服务器的用途

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

正向代理的代理对象是客户端,因为目标服务器是和正向代理服务器交流,并不知道是哪个客户端。

三、反向代理服务器

随着网站用户量增加,单个服务器性能成为主要限制,所以一般服务器采用“分布式部署”,也就是通过部署多态服务器来解决性能上问题。

在这里插入图片描述

  • 反向代理服务器和服务器集群是同一环境
  • 客户端不用配置反向代理服务器,或者说客户端认为反向代理服务器就是目标服务器

反向代理对用户则是不可知的,比如我们访问百度网站,百度的代理服务器对外的域名为 https://www.baidu.com 。具体内部的服务器节点我们不知道,现实中我们通过访问百度的代理服务器后,代理服务器给我们转发请求到他们N多的服务器节点中的一个给我们进行搜索后将结果返回。
反向代理的作用

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

反向代理的代理对象是服务器,因为客户端是和反向代理服务器交流,并不知道具体哪个服务器。

四、均衡负载(load balance)

因为反向代理服务器要确定给哪个目标服务器,所以要采取一定的策略(也就是将请求按照一定的规则进行分发)
常用的分发方式有:

  • 轮询(默认):按照时间顺序逐一分发到不同服务器(若某台宕机,可以自动处理)
  • 权重:针对服务器性能不同。权重越大,请求分配到此服务器的数目越多
  • ip_hash:上面的2种方式都有一个问题,那就是下一个请求来的时候请求可能分发到另外一个服务器,当我们的程序不是无状态的时候(采用了session保存数据),这时候就有一个很大的很问题了,比如把登录信息保存到了session中,那么跳转到另外一台服务器的时候就需要重新登录了,所以很多时候我们需要一个客户只访问一个服务器,那么就需要用iphash了,iphash的每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
  • fair:智能调度算法,动态根据响应时间进行均衡分配
  • url_hash:根据访问的url的hash结果分配请求,每个url会对应后端固定的服务器,可以在Nginx作为静态服务器的情况下提交缓存效率。

五、HTTP服务器(动静分离)

  • Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
  • 动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路
    六、Nginx优点
  • Nginx使用基于事件驱动架构,使得其可以支持数以百万级别的TCP连接
  • 高度的模块化和自由软件许可证使得第三方模块层出不穷(这是个开源的时代啊~)
  • Nginx是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris,AIX,Mac OS等操作系统上
  • 这些优秀的设计带来的是极大的稳定性

六、web服务器对比

在这里插入图片描述
Apache与Nginx两者性能差别的主要原因在于网络IO模型选择不同,apache使用了select,而nginx使用了epoll模型!
假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。select版宿管大妈就会带着你的朋友挨个房间去找,直到找到你为止。而epoll版宿管大妈会先记下每位同学的房间号,你的朋友来时,只需告诉你的朋友你住在哪个房间即可,不用亲自带着你的朋友满大楼找人。

posted @ 2020-02-24 23:32  测试开发分享站  阅读(139)  评论(0编辑  收藏  举报