反向代理服务器 Nginx

Nginx 简介

Nginx (engine x) 是一个轻量级的、高性能的、基于 Http 的、反向代理服务器,同时还是一个电子邮件服务器。

代理服务器

代理服务器根据其代理对象的不同,可以分为正向代理服务器与反向代理服务器。这里的“正”与“反”均是站在客户端角度来说的。

正向代理

正向代理是对客户端的代理。客户端 C 想要从服务端 S 获取资源,但由于某些原因不能直接访问服务端,而是通过另外一台主机 P 向服务端发送请求。当服务端处理完毕请求后,将响应发送给主机 P,主机 P 在接收到来自服务端的响应后,将响应又转给了客户端 C。此时的主机 P,就称为客户端 C 的正向代理服务器。客户端在使用正向代理服务器时是知道其要访问的目标服务器的地址等信息的。正向代理服务器是服务器的用户(客户端)架设的主机,与服务端无关,正向代理服务器的出现,使服务端根本就不知道真正客户端的存在。

为什么要使用正向代理服务器呢?

正向代理服务器的常见功能总结如下: 

(1) 隐藏

向服务端隐藏真正的访问者。因为,对于服务端来说,真正的访问者,真正的客户端是正向代理服务器,服务端是不知道正向代理服务器的访问者的。所以起到了隐藏客户端的作用。例如,现在的很多电信诈骗电话,都是使用了代理服务器。我们看到的来电显示电话号码,其实并不是诈骗者真正使用的电话号码。诈骗者真正拨打的是正向代理服务器的电话,由代理服务器拨通了我们的电话

(2) 翻墙

由于某些原因,客户端 C 不能直接访问服务端 S,但客户端 C 可以直接访问代理服务器P,而代理服务器 P 可以直接访问服务器 S,所以,客户端通过代理服务器 P 实现对服务端 S的访问,这种技术称为“翻墙”。例如,我们想通过“Google 学术”下载一些学术论文,由于政策原因,我们不能直接访问 Google。此时,我们可能通过一些翻墙软件,在软件中我们可以访问 Google。但,在使用软件之前,需要首先在软件中输入我们要连接的正向代理服务器的 IP 地址,连接上这个服务器。 反向代理服务器 Nginx

(3) 提速

若客户端直接访问服务端,其是通过一个低速网络链路,其访问效率较低。但客户端访问另一主机 P,及该主机 P 访问服务端,它们所使用的链路均为高速链路。此时,就可将这台主机 P 构建为一个正向代理服务器。通过该代理服务器访问服务端的效率,比直接访问的效率还要高。

(4) 缓存 反向代理服务器 Nginx

若客户端从服务端以获取资源为主,则可在客户端与服务端之间添加具有缓存功能的正向代理服务器。当一个客户端从服务器获取某资源时,首先查看代理服务器中是否具有该资源。若具有该资源,则直接从代理服务器获取资源即可;若不具有该资源,则再由代理服务器向服务端发送资源请求,将资源获取到后,缓存到正向代理服务器中,并返回给客户端。以后再有客户端提交获取该资源的请求时,直接从代理服务器中获取即可。不仅加快了对客户端的响应速度,增强了用户体验,而且还减轻了服务端的压力,提高的整个系统的执行效率。
Maven 的 Nexus 私服就是一个典型的用于“缓存”功能的正向代理服务器。

(5) 授权

比较典型的授权应用是,在公司内部局域网中,不是所有人的电脑都是可以连接外网的。那么公司是怎样实现外网访问权限管理的呢?在公司局域网与外网之间架设一道防火墙,而在正向代理服务器中设置公司局域网内的连接外网权限,即向防火墙中添加新的规则,以实现能否通过防火墙。

反向代理

反向代理 Reverse Proxy,是对服务端的代理。单从功能示意图上看,好像反向代理与正向代理没有区别,都是架设在客户端与服务端间的主机。但,反向代理是服务端架设的主机,与客户端无关。客户端认为其访问的是服务器本身,但其真正访问是反向代理服务器。客户端在使用反向代理服务器时,根本就不知道自己真正要访问的目标服务器的地址及信息,所有的访问都是通过代理完成的。这点上是与正向代理服务器不同的。

(1) 保护隐藏

客户端只能访问到反向代理服务器,而真正的服务器客户端是不能直接访问的。这样就起到了保护和隐藏真正服务器的目的。

(2) 负载均衡

当客户端访问较集中时,会产生高并发问题。对于分布式服务器系统,反向代理可以根据请求功能的不同,将请求转发给相应的服务器;对于集群服务器系统,反向代理可以根据各服务器的负载量,将请求转发给负载较轻的服务器。而这些,都是起到了负载均衡的效果。

(3) 动静分离

动态资源是指,需要经过服务端代码运算后才可形成的资源。例如,JSP 页面就是动态资源,因为页面中的数据是由服务端从 DB 中查询出来的。静态资源是指不会发生改变的资源,例如,页面中的图片、音频、视频、CSS、JS 等资源文件,均为静态资源。反向代理服务器直接将动态资源请求与静态资源请求进行了分离,降低了应用服务器的压力。

(4) 数据缓存

反向代理也具有数据缓存的功能。例如,将客户端请求的静态资源缓存到代理服务器中。当再有相同资源请求时,直接从代理服务器中获取该资源即可。 

Nginx 的特点

1. 高并发

2. 低消耗

3.热部署

4. 高扩展

5.高可用

猜你喜欢

转载自www.cnblogs.com/wu-yi/p/12163188.html