三废的日常--代理是什么
大废:你在看什么呀
小废:我在看Nginx呢
二废:你咋在看这个呢
小废:这不是领导让作技改嘛,开会说的可玄乎了,让作代理,并实现高可用,高负载,我都不知道代理是啥,还得请两位哥哥帮帮小弟。
大废:这还不简单,二废知道什么是正向代理吗?
二废:我刚百度了一下,正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。可完全不理解呀。
大废:咳咳,正向代理呢,其实很简单,用户通过代理服务器去访问原始服务器,可以比做到山姆超市买东西。比如,二废要给猪儿子买奶粉,但山姆超市只能会员去买。小废有商店的会员,于是,二废每次买东西都通过小废去购买。这里的二废可以看作是客户端,小废看作是正向代理服务器,商店则是客户端想要访问的网站或服务器。这里有两种场景,一是客户端访问不到目标服务器,从而使用代理服务器去访问。另外一种是客户端能访问到目标服务器,但客户端想隐藏自己的IP地址,从而借助代理服务器的身份去访问目标服务器。一般行里用的VPN用到的就是正向代理,这个代理是用户自己设置的,所以对用户是可见可感知的。
小废:那反向代理呢?
大废:不要急嘛。
二废:百度是这样描述的,反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。
大废:是的,但还是很费解,还是买东西的例子。小废为了赚代购费,向网上散播了很多广告,很多人通过小废代购商品,于是买东西都是通过小废代购,小废也不用去指定商家。这里买东西的人就是客户端,卖东西的商家就是目标服务器,这里目标服务器还可以是多台,客户端访问目标服务器来获取数据,但是目标服务器的接口不方便对外暴露,于是就通过(小废)Nginx反向代理给客户端。作为客户端并不知道服务器内部接口的情况,只知道Nginx代理的IP地址及接口。这就是反向代理,类似的有大多数企业的软负载均衡就是用到了nginx,同时为了避免一些服务器暴露在外网中被恶意攻击,很多企业会选择把服务器通过反向代理的方式进行隔离,暴露给用户访问的服务器其实是反向代理服务后的地址,而不是真正的服务器网址,这样就能有效的避免一些恶意攻击。
二废:那这两种代理方式,有哪些区别呢?
小废:我总结了一下,正向代理客户端知道目标网站或者服务器,但客户端不方便直接访问或者无权限访问。反向代理,客户端需要访问服务器的服务,而服务器的服务接口不方便直接暴露给客户端,然后就通过反向代理的方式展示给客户端,而Nginx是一个常用的代理服务器。
总结:
image.png对于正向代理而言,正向代理服务器对于客户端是可见的,同时对于服务端是不可见的。
image.png而对于反向代理而言,反向代理服务器对于服务端是可见的,同时对于客户端是不可见的。