文章目录

  • Nginx官网
  • Http协议常见的实现方式
  • 网站统计数据的指标
  • Nginx
  • 百度百科
  • Nginx功能
  • 正向代理与反向代理
  • 代理服务器
  • 为什么使用代理服务器?
  • 正向代理
  • 反向代理
  • 正向代理和反向代理的区别
  • 正向代理的应用
  • 反向代理的应用
  • 总结
  • Nginx 与 Apache
  • 做服务器时,apache与nginx的优缺点
  • Nginx的优点

Nginx官网

https://www.nginx.com/

Http协议常见的实现方式

  • Html
  • PHP(轻量级,适合小网站)
  • Jsp(大网站用)
  • Python(知乎,豆瓣)

网站统计数据的指标

  • PV (page view):页面查看的数量,点开一次就是一个pv
  • UV:访问的客户量(user view)
  • AC(Active connetcion)在线链接数
  • QPS:每秒请求数

Nginx

百度百科
  • Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
  • 其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
  • Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx功能
  • web服务器
  • 反向代理
  • 正向代理
  • 负载均衡

正向代理与反向代理

代理服务器
  • 提供代理服务的电脑系统或其它类型的网络终端,代替网络用户去取得网络信息。
  • 一般是指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端。
为什么使用代理服务器?
  • 提高访问速度
    由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门网站能明显提高访问速度。
  • 防火墙作用
    由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可以在代理服务器上设限,过滤掉某些不安全信息。同时正向代理中上网者可以隐藏自己的IP,免受攻击。
  • 突破访问限制
    互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点。
正向代理
  • 正向代理(forward proxy) ,一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并制定目标(原始服务器),然后代理向原始服务器转发请求并将获得的内容返回给客户端,客户端才能使用正向代理。我们平时说的代理就是指正向代理。
  • 简单一点:A向C借钱,由于一些情况不能直接向C借钱,于是A想了一个办法,他让B去向C借钱,这样B就代替A向C借钱,A就得到了C的钱,C并不知道A的存在,B就充当了A的代理人的角色。
反向代理
  • 反向代理(Reverse Proxy),以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求的客户端,此时代理服务器对外表现为一个反向代理服务器。
  • 理解起来有些抽象,可以这么说:A向B借钱,B没有拿自己的钱,而是悄悄地向C借钱,拿到钱之后再交给A,A以为是B的钱,他并不知道C的存在。

    (或者理解为我们打电话给10086的人工服务,我们只知道10086接了我们的电话,而不知道到底是哪位客服接了我们的电话。)
正向代理和反向代理的区别
  • 位置不同
    正向代理,架设在客户机和目标主机之间;
    反向代理,架设在服务器端;
  • 代理对象不同
    正向代理,代理客户端,服务端不知道实际发起请求的客户端;
    反向代理,代理服务端,客户端不知道实际提供服务的服务端;

nginx的UIP概念 nginx pv_代理服务器

备注:正向代理–HTTP代理为多个人提供服务;反向代理–百度外卖为多个商户提供平台给某个用户提供外卖服务。

  • 用途不同
    正向代理,为在防火墙内的局域网客户端提供访问Internet的途径;
    反向代理,将防火墙后面的服务器提供给Internet访问;
  • 安全性不同
    正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此必须采取安全措施以确保仅为授权的客户端提供服务;
    反向代理都对外都是透明的,访问者并不知道自己访问的是哪一个代理。
正向代理的应用
  1. 访问原来无法访问的资源
  2. 用作缓存,加速访问速度
  3. 对客户端访问授权,上网进行认证
  4. 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
反向代理的应用
  • 保护内网安全
  • 负载均衡
  • 缓存,减少服务器的压力
  • Nginx作为最近较火的反向代理服务器,安装在目的主机端,主要用于转发客户机请求,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后台的服务器,决定哪台目标主机来处理当前请求
总结
  • 正向代理是从客户端的角度出发,服务于特定用户(比如说一个局域网内的客户)以访问非特定的服务;反向代理正好与此相反,从服务端的角度出发,服务于非特定用户(通常是所有用户),已访问特定的服务。

Nginx 与 Apache

  • 相同点:
    1、都是HTTP服务器软件。
    2、功能上都采用模块化结构设计。
    3、都支持通用的语言接口,如PHP、Perl、Python等。
    4、支持正向、反向代理、虚拟主机、URL重写、压缩传输、SSL加密传输。
  • 不同点:
    1、Apache处理速度很慢,占用很多内存资源。
    2、功能上,Apache所有模块支持动静态编译,Nginx模块都是静态编译的。
    3、对Fcgi的支持:Apache支持的很不好,Nginx支持非常好。
    4、处理连接方式:Nginx支持epoll,Apache不支持。
    5、空间使用上:Nginx安装包仅几百K。
做服务器时,apache与nginx的优缺点
  • apache事件处理模型:prefork预派生,同步阻塞,适合处理后端真实的web。
    适合于有波峰的业务。(例如:外卖,平时没有请求,到一个时间点请求会爆增。)
  • nginx:API 反向代理 静态资源服务器,处理的并发量高,但不太稳定,异步非阻塞。
    一个master进程(fork)和多个子进程worker。适合平稳的业务,请求一直很平均。
  • 作为Web服务器,Nginx处理静态文件、索引文件,自动索引的效率非常高。
  • 作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度。
  • 作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡。
Nginx的优点
  • 支持高并发。(在性能方面,Nginx是专门为性能优化而开发的,实现上非常注重效率。它采用内核Poll模型,可以支持更多的并发连接,最大可以支持对5万个并发连接数的响应,而且只占用很低的内存资源)
  • 内存消耗很少。(在稳定性方面,Nginx采取了分阶段资源分配技术,使得CPU与内存的占用率非常低。Nginx官方表示,Nginx保持1万个没有活动的连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的。)
  • 配置文件简单。
  • 便宜,开源。
  • 支持rewrite重写规则:根据域名将用户的访问定向到其他服务器(301永久重定向,302重定向,200ok 直接访问到的值)。
    例如,我们输入不同的域名访问淘宝时:
  • 内置的健康检查功能。
  • 支持gzip压缩(淘宝 图片买家秀会压缩)加快访问速度。
  • 节省带宽。
  • 稳定性高,宕机几率特别小。
  • 模块化设计,模块都可以编译。
  • 在高可用性方面,Nginx支持热部署,正在运行的时候可以重新更新版本或模块。启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7x24小时不间断地运行。
  • 第三方支持,模块的文档很全。

阿里重新编写nginx,更加适合阿里巴巴。Tengine,不会跟nginx官方同步更新。

nginx的UIP概念 nginx pv_Nginx_02