(1)反向代理
通过Nginx我们可以实现反向代理,这也是我在项目中使用到的一个功能,那么什么是反向代理呢?我们用户对代理是无感知的,因为我们不需要进行任何配置就可以进行访问。我们只需要将请求发送至反向代理服务器,由反向代理服务器帮我们决定需要访问哪个资源并且将资源返回给我们。此时反向代理服务器和目标服务器对外就是服务器,但是只对外暴露了代理服务器的地址,目标服务器的地址是隐藏的。
可能上面的文字你没理解,没关系,下面我举一个简单的例子加以说明。就比如你和你的一堆朋友刚到一个地方,你想知道附近有什么推荐的火锅店,这时候你并不知道附近有什么好的火锅店。你只认识当地的一个朋友,这时候你问他附近有什么火锅店推荐的,这时候你朋友就会告诉你“ 赵四火锅店YYDS ”。这时候你朋友就充当了一个反向代理服务器,你一开始并不知道真实的火锅店名称,当然代理服务器返回资源给你后你也还是不知道你访问的是哪个目标,就好像你并不知道赵四火锅店的背景,你只知道你只是实现了吃火锅这一需求。
(2)正向代理
Nginx不仅可以实现反向代理,还能实现正向代理,那么什么是正向代理呢?前面说到反向代理我们是无感知的,我们并不知道我们需要访问的目标,我们只是知道代理的地址。而正向代理则不同,我们是很清楚我们需要访问的目标的,但是访问过程中出现了一个代理去帮我们完成这个请求并将结果返回。 此时服务器只知道请求来自哪个代理服务器,而不知道是哪个客户端发起的请求,正向代理模式屏蔽或者隐藏了真实客户端的信息。
可能上面的文字理解起来有点干涩,没关系,我还是举火锅的例子。这时候你的需求并不是问火锅店了,而是你想要打包赵四火锅店的火锅,这时候就出现了一个人去帮你打包并带回来,这时候赵四只知道是谁来买的,并不知道买的人是谁,隐藏了客户端的信息,这就是正向代理。