Nginx 理论详解

Nginx 简述

  • Nginx (engine x) 是一个高性能的HTTP web服务器和反向代理服务器,也是一个IMAP/POP3/SMTP服务器
  • Nginx 特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东新浪网易腾讯淘宝等。
  • Nginx 的1.4.0稳定版已经于2013年4月24日发布
  • 在连接高并发的情况下,Nginx是Apache服务器不错的替代品,能够支持高达 50,000 个并发连接数的响应
  • Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
  • Nginx 官网:http://nginx.org/en/
  • 对于Java开发人员,需要使用到的就是它的“反向代理”、“负载均衡”、“动静分离”功能下面将重点介绍它们

正向代理

  • 理解反向代理之前,先要知道什么是正向代理
  • 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。
  • 正向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代 理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。


  • 使用正向代理服务器作用可以如下:

访问本无法访问的服务器B


  • 假设图中路由器从左到右命名为R1,R2假,设最初用户A要访问服务器B需要经过R1和R2路由器这样一个路由节点,如果路由器R1或者路由器R2发生故障,那么就无法访问服务器B了。
  • 但是如果用户 A让代理服务器Z去代替自己访问服务器B,由于代理服务器Z没有在路由器R1或R2节点中,而是通过其它的路由节点访问服务器B,那么用户A就可以得到服务器B的数据了。
  • 现实中的例子就是“翻墙”。不过自从VPN技术被广泛应用外,“翻墙”不但使用了传统的正向代理技术,有的还使用了VPN技术。

Cache作用

  • Cache(缓存)技术和代理服务技术是紧密联系的(不光是正向代理,反向代理也使用了Cache(缓存)技术。
  • 如上图所示,如果在用户A访问服务器B某数据J之前,已经有人通过代理服务器Z访问过服务器B上得数据J,那么代理服务器Z会把数据J保存一段时间,如果有人正好取该数据J,那么代理服务器Z不再访问服务器B,而把缓存的数据J直接发给用户A。
  • 这一技术在Cache中术语就叫Cache命中。如果有更多的像用户A的用户来访问代理服务器Z,那么这些用户都可以直接从代理服务器Z中取得数据J,而不用千里迢迢的去服务器B下载数据了。

反向代理

  • 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
  • 所有用户访问的都是反向代理服务器(同一个IP与端口),接着由代理服务器根据算法将请求转发到内网的其它服务器上,可以是相同或不同的IP与端口。反向代理不再需要用户设置任何东西,只需要开发人员设置好反向代理服务器即可


  • 使用反向代理服务器的其中一个作用如下:

保护和隐藏原始资源服务器

  • 用户A始终认为它访问的是原始服务器B而不是代理服务器Z,但实用际上反向代理服务器接受用户A的应答,从原始资源服务器B中取得用户A的需求资源,然后发送给用户A。
  • 由于防火墙的作用,只允许代理服务器Z访问原始资源服务器B。尽管在这个虚拟的环境下,防火墙和反向代理的共同作用保护了原始资源服务器B,但用户A并不知情。

负载均衡

  • 负载均衡,英文名称为Load Balance,是指建立在现有网络结构之上,并提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。其原理就是数据流量分摊到多个服务器上执行,减轻每台服务器的压力,多台服务器共同完成工作任务,从而提高了数据的吞吐量。


动静分离

  • 将静态的资源放到反向服务器,以节省用户的访问时间,提供访问速度

单节点架构

集群架构

集群+分布式架构







猜你喜欢

转载自blog.csdn.net/wangmx1993328/article/details/80900750