本文作者:浓浓桂花香

不懂Nginx正反向代理?没关系,现在来给你讲讲原理

浓浓桂花香 7个月前 ( 03-10 ) 28

我们都知道Nginx之所以强大,正式在于它的代理功能,特别是反向代理,在集群、负载均衡上可谓大显身手。那么什么是正向代理以及反向代理呢?今天我们不用专业术语,而是用简单易懂的买东西的原理来举例。

一.正向代理

情景:【小明】想要到【解忧杂货铺】去买可乐,但是来到杂货铺,门关着的并且挂着牌子写着:“只有会员才能进门买商铺”。这时候【小代】对小明说他有杂货铺的会员,可以帮小明买,于是小明每次去杂货铺买东西都通过小代购买。

解释:【小明】就是我们所说的客户端;【小代】则是Nginx正向代理服务器;【解忧杂货铺】则是客户端想要访问的网站或者服务器。这里的情景是客户端访问不到目标网站,从而选择代理服务器作为介质去访问;还有一种就是客户端能访问到目标网站,只是客户端想隐藏自己的身份(IP),从而可以借助代理服务器的身份去访问目标服务器。

二.反向代理

情景:还是【小明】想要去【解忧杂货铺】买可乐,但是杂货铺的【服务员小艺】对小明说:“可乐我可以提供给你,但是你不能直接去我店铺里拿,你需要什么直接跟我说,我给你拿就可以了”。于是小明每次买东西都是到杂货铺门口找服务员买,需要什么服务员就给他拿即可,但是小明却看不到店铺里面商品如何摆设。

解释:【小明】就是客户端,【解忧杂货铺】是目标服务器,客户端要访问目标服务器上的接口获取数据,但是目标服务器上内部的接口不方便对外开放的情境下,就通过【服务员小艺】(Nginx)反向代理给客户端。这时候客户端是不知道服务器内部接口的情况,只知道Nginx代理的IP地址提供的接口,并不知道这个接口从哪里来的。

三.区别

还是用【小明】买可乐来进行对比来进行解释两者的区别:

1.正向代理:小明能看到【解忧杂货铺】里的东西。专业术语就是客户端知道目标网站或者服务器,但客户端不方便直接访问或者无权限访问(例如需要权限或者翻墙),这时候需要通过Nginx代客户端进行访问。

2.反向代理:小明看不到【解忧杂货铺】里具体的东西,只能通过【服务员小艺】展示的来进行购买。专业术语就是客户端需要访问服务器A的接口,而服务器A接口不方便暴露,只有通过Nginx反向代理的方式展示给客户端,这时候客户端只知道接口是Nginx地址暴露的,但却不知道原来是服务器A的接口。

四.应用场景

1.正向代理一般用于访问特定的服务器或者地址,客户端需要隐藏真实IP。

2.正向代理还有一个使用场景是访问无法直接访达的地址,例如google,目前无法访问,这时候就通过代理的方式去访问。

3.反向代理主要用于服务器接口安全,服务端的接口都只对内部开发,外网无法访问。这时候就要借助Nginx反向代理,把内网服务器的接口映射到外网,从而隐藏了内部服务器地址。

4.反向代理还有一个引用场景是均衡负载。Nginx可以配置多个后端服务器,而暴露给外网的仍然是相同的接口,只不过这时候后端可以是1个或者多个,多个的目的是保障后端服务器能够最大限度的承载。

五.总结

技术并没有我们想象的那么遥远那么触不可及,其实它就在我们身边,技术也是源于生活,同时又致力于改善生活。

赞(0
宝贝回家