程序员别唬我系列之:反向代理

9 评论 8397 浏览 25 收藏 5 分钟

此代理非彼代理

看见『代理』二字就冲进来的网监大人,请不要激动,这篇文章说的并不是用来爬墙的『代理』技术,而且针对Web服务器的一种代理技术~

通常我们所说的代理,都是指的客户端向外界发起请求时,并不是直接与目标服务器连接,而是经过一个代理服务器,将所有请求交给代理服务器,由它去负责连接外界的目标服务器,同时从服务器返回的数据,也经过代理服务器,返回到客户端。在外界看来,所有请求都是来自这台代理服务器,这样就成功的将客户端隐藏在自己身后,起到了一种保护客户端的作用。

而『反向代理』却是反过来的,它是针对服务器的一种代理技术。反向代理服务器可以接受客户端的请求,然后将它分发到被代理的服务器上,待这些服务器处理完请求后,再将结果转发给客户端,它是将服务器隐藏在自己的身后。从客户端看来,它面对的只有一台服务器,但是背后可能有1000台服务器在提供服务。

『反向代理』这样做有什么意义呢?

首先,它可以做『负载均衡』。比如说,对于同一个web服务,有10台服务器可以提供服务,但是每台服务器的负荷不太一样,如果一个请求发送到负荷较高的服务器,那么它的处理时间可能会稍长一点,但是客户端是不知道哪一台服务器比较空闲,所以将请求发送到『反向代理』服务器,它是知道每台服务器的负载的,这样由它将请求转发到相对空闲的服务器,以便更快的响应客户端。

然后,它可以减轻后端服务器的一些压力,比如很多静态资源或者缓存数据,可以直接放在反向代理服务器上,不用将这些请求传递到后端服务器,相对来说减轻了后端服务器的压力。

它还可以对请求做进一步的封装和解封,比如想把所有请求升级到ssl加密连接,却不想改造后端服务器,那么可以只在客户端-反向代理服务器之间使用ssl加密连接,而代理服务器-后端服务器之间仍旧使用普通http连接,这样就事半功倍了。

同时,反向代理服务器还可以为后端服务器阻挡一些网络攻击,提升后台服务器的安全性。

总之,反向代理服务器对于后端服务器,就是一个接口人的角色,它接洽了所有客户端的请求,并且进行简单的处理,然后分发到后端服务器。

#专栏作家#

给产品经理讲技术,微信公众号(pm_teacher),人人都是产品经理专栏作家。资深程序猿,专注客户端开发若干年,对前端、后台技术略懂,热衷于对新的科技领域的探索。

本文原创发布于人人都是产品经理。未经许可,禁止转载。

题图来自Pixabay,基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
海报
评论
评论请登录
  1. 回复
  2. 还在因为”不懂技术”被开发忽悠?15天系统化解锁产品经理必懂的程序/代码、前端、后端、数据库4大模块基础技术知识。助你日常沟通更顺畅,产品设计不挖坑!
    详情戳>http://996.pm/7daXE 或咨询起点学院蘑菇(wx:qdxymg)

    来自广东 回复
  3. 什么情况下或者说什么样的公司要使用反向代理服务器呢

    来自河北 回复
  4. 反向代理和代理我怎么感觉是一样的😢

    回复
    1. 确实写得好

      回复
    2. 我也是。。。没看懂 😥

      来自北京 回复
    3. 逻辑上是差不多,就是反一下。作用上可以起到均衡负载的作用,不过除此之外都一样了= =

      来自江苏 回复
  5. 不错,不错,希望有更多的作品,赞!

    来自北京 回复
  6. 感谢分享,技术贴看起来有点吃力 😡

    来自北京 回复