NGINX正向代理与反向代理区别

NGINX是一款是由俄罗斯的程序设计师所开发高性能的 Web 和正向、反向代理服务器,也是一个电子邮件(IMAP/POP3/SMTP)代理服务器。在高连接并发的情况下,Nginx 是 Apache 服务器不错的替代品。今天我们就来讨论一下 NGINX 正向代理与反向代理的区别以及在实际工作中的用途。

了解代理

我们首先来了解一下什么是代理,代理在我们运维工作中本质上就是一台服务器,可以类比为生活中的中介,A 和 B 理论上是可以直接联系,但是我们为了实现一些功能(下面讲具体功能),所以我们会设置一个中介服务器 C,C 就是中介。拿买房举个例子,买家和卖家原本可以直接交流,但是我们为了方便起见,买家把买房需求告诉中介,卖家把卖房需求告诉中介。这样买方和卖方都通过中介来进行交流联系,这就是中介(代理服务器)的作用了。

正向代理

我们工作中经常说到的代理服务器通常指的是正向代理,特点是:隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端的请求都由代理服务器代替来请求,然后从服务端获取的数据返回到代理服务器,再由代理服务器返回给客户端。最常用的实际用途是搭建 VPN,下面进行细讲。
NGINX正向代理与反向代理区别

我们举例来进行说明,在国内如果你的电脑想打开 Google,流程是客户端直接访问 Google 的服务器,但是因为有防火长城的原因,是无法访问的。但是我有一台位于美国的服务器,我可以利用美国的服务器搭建一台正向代理服务器,我们本机的电脑即可通过代理服务器获取到从 Google 返回的数据了。
当出现多台客户端同时访问的时候,是这样的:
NGINX正向代理与反向代理区别

这时候 Google 服务器并不知道真实的请求者是谁,只会认为这三个客户端的请求是同时来自于代理服务器的。

反向代理

反向代理刚好与正向代理相反,特点是:隐藏了真实的服务器,客户端不知道真实的服务端是谁,客户端的请求依然是由代理服务器来进行请求,但是不同的是,代理服务器会指定一个服务器来处理来自客户端的请求,然后返回的数据交给代理服务器,再由代理服务器返回给客户端。常用的实际用途是实现负载均衡。
NGINX正向代理与反向代理区别

举个例子,百度刚开始做搜索引擎的时候可能就一台位于北京的服务器,我们打开 www.baidu.com 的时候就是直接访问百度北京的那唯一一台服务器,但是随着越来越多的人来使用百度了,云南的小伙伴们打开百度的速度远远没有北京的小伙伴们打开网站速度快啊,给李彦宏反映,给我们这加台服务器吧。加了服务器之后,两台服务器上面的数据内容都一样,但是北京和云南的小伙伴们访问 www.baidu.com 的时候,到底该访问哪一台呢,这时候就需要在两地中间增加一台总代理服务器,云南和北京的小伙伴们访问百度的时候都是首先到达百度的代理服务器,然后由代理服务器分配真实的服务器给客户端进行访问。
当出现多台客户端同时访问的时候,是这样的:
NGINX正向代理与反向代理区别

这时候客户端并不知道自己访问的是哪一台具体的服务器,这些都是由代理服务器进行分配的,一般来说会选择距离客户端最近的服务器。

一句话总结

正向代理服务器,代理的对象是客户端;反向代理服务器,代理的对象是服务端。

参考借鉴

知乎:https://zhuanlan.zhihu.com/p/25707362

发表评论

电子邮件地址不会被公开。必填项已用 * 标注