目录
Nginx 概述
应用场景
代理
正向代理
反向代理
负载均衡
系统架构概述
1、Nginx (engine x) 是一个高性能的 HTTP web 服务器和反向代理服务器,也是一个 IMAP/POP3/SMTP 服务器。
2、Nginx 特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
3、Nginx 的1.4.0稳定版已经于2013年4月24日发布
4、在连接高并发的情况下,Nginx 是 Apache 服务器不错的替代品,能够支持高达 50,000 个并发连接数的响应
5、Nginx 作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
6、Nginx 官网:http://nginx.org/en/
7、对于Java开发人员,需要使用到的就是它的“反向代理”、“负载均衡”、“动静分离”功能,下面将重点介绍它们。
解决跨域
请求过滤
配置 gzip
反向代理,负载均衡:把请求转发给不同的服务器。
静态资源服务器:将静态的资源放到反向服务器,以节省用户的访问时间,提供访问速度
1、代理 是在服务器和客户端之间假设的一层服务器,代理 将接收客户端的请求并将它转发给服务器,然后将服务端的响应转发给客户端。无论正向代理还是反向代理都实现此功能。
1、了解反向代理之前,应该先知道什么是正向代理。一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。
2、正向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。
3、客户端必须要进行一些特别的设置才能使用正向代理。
正向代理 是为客户端服务的,客户端可以根据正向代理访问到它本身无法访问到的服务器资源。
正向代理 对客户端是透明的,对服务端是非透明的,即服务端并不知道自己收到的是来自代理的访问还是来自真实客户端的访问
4、使用正向代理服务器作用可以如下:
访问本无法访问的服务器B
1、假设图中路由器从左到右命名为R1,R2,设最初用户A要访问服务器B需要经过R1和R2路由器这样一个路由节点,如果路由器R1或者路由器R2发生故障,那么就无法访问服务器B了。
2、但是如果用户 A让代理服务器Z去代替自己访问服务器B,由于代理服务器Z没有在路由器R1或R2节点中,而是通过其它的路由节点访问服务器B,那么用户A就可以得到服务器B的数据了。(这就是平时科学上网的方式之一)
3、现实中的例子就是“科学上网”,不过自从VPN技术被广泛应用外,“科学上网”不但使用了传统的正向代理技术,有的还使用了VPN技术。
Cache 缓存命中
1、Cache(缓存)技术和代理服务技术是紧密联系的(不光是正向代理,反向代理也使用了Cache(缓存)技术。
2、如上图所示,如果在用户A访问服务器B某数据J之前,已经有人通过代理服务器Z访问过服务器B上得数据J,那么代理服务器Z会把数据J保存一段时间,如果有人正好取该数据J,那么代理服务器Z不再访问服务器B,而把缓存的数据J直接发给用户A。
3、这一技术在Cache中术语就叫Cache命中(缓存命中),如果有更多的像用户A的用户来访问代理服务器Z,那么这些用户都可以直接从代理服务器Z中取得数据J,而不用千里迢迢的去服务器B下载数据了。
1、反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
2、所有用户访问的都是反向代理服务器(同一个IP与端口),接着由代理服务器根据算法将请求转发到内网的其它服务器上,可以是相同或不同的IP与端口。反向代理不再需要用户设置任何东西,只需要开发人员设置好反向代理服务器即可
反向代理 是为服务端服务的,反向代理可以帮助服务器接收来自客户端的请求,帮助服务器做请求转发,负载均衡等。
反向代理 对服务端是透明的,对我们是非透明的,即我们并不知道自己访问的是代理服务器,而服务器知道反向代理在为他服务。
3、使用反向代理服务器的其中一个作用如下:
保护和隐藏原始资源服务器
1、用户A始终认为它访问的是原始服务器B而不是代理服务器Z,但实用际上反向代理服务器接受用户A的请求,从原始资源服务器B中取得用户A的需求资源,然后发送给用户A。
2、由于防火墙的作用,只允许代理服务器Z访问原始资源服务器B,尽管在这个虚拟的环境下,防火墙和反向代理的共同作用保护了原始资源服务器B,但用户A并不知情。
1、负载均衡,英文名称为Load Balance,是指建立在现有网络结构之上,并提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。其原理就是数据流量分摊到多个服务器上执行,减轻每台服务器的压力,多台服务器共同完成工作任务,从而提高了数据的吞吐量。
单节点架构
集群架构
集群+分布式架构