反向代理是个什么意思?


之前有了解过,但不深入(这次也不会多深入,但会增进对反向代理的理解),也是在知乎上看到的一个问题,然后跟进去、自己搜一搜,就酱紫了:

反向代理是什么意思? – 知乎

@Nestle 的一个我认为比较容易理解的版本:

代理:在客户这一端,替客户收发请求
反向代理:在服务器机房这一端,替服务器收发请求,也就是说请求和响应都先经过反向代理。具有缓存、安全、负载均衡等作用。

@曹力 这个也不错:

一般代理代理的是客户端,对服务器端来说,该代理就是客户端。
反向代理代理了服务器端,对客户端来说,这个代理就是服务器端。

维基百科上的一张图就很能说明问题(还是因为我无知了):

400px-Reverse_proxy_h2g2bob.svg

扩展阅读:

《 “反向代理是个什么意思?” 》 有 13 条评论

  1. 浅谈正向代理与反向代理
    http://blog.collin2.xyz/index.php/archives/21/
    `
    使用场景

    # 正向代理
    1.科学上网
    2.匿名访问
    3.跳板机

    # 反向代理
    1.负载均衡
    2.保护和隐藏原始资源服务器
    3.加密和SSL加速
    4.缓存静态内容
    5.压缩
    6.减速上传
    7.安全
    8.外网发布
    `

  2. UDP的反向代理:NGINX
    http://www.taohui.pub/udp%E7%9A%84%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%EF%BC%9Anginx/
    `
    配置nginx为UDP反向代理服务。实际配置则很简单:

    # Load balance UDP-based DNS traffic across two servers
    stream {
    upstream dns_upstreams {
    server 192.168.136.130:53;
    server 192.168.136.131:53;
    }
    server {
    listen 53 udp;
    proxy_pass dns_upstreams;
    proxy_timeout 1s;
    proxy_responses 1;
    error_log logs/dns.log;
    }
    }

    如何通过nginx向后端服务传递客户真实IP

    方案1:IP地址透传
    方案2:DSR(上游服务无公网)
    方案3:DSR(上游服务有公网)
    `

  3. 2020-1-10-内网穿透神器frp
    https://xinyuehtx.github.io/post/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E7%A5%9E%E5%99%A8frp.html
    `
    # Frp原理
    那么有同学就会想,既然我vps有公网IP,那是不是可以让我,内网的设备主动到vps上面,注册一个服务呢?
    没错,frp就是这样做的。

    frp的服务端可以就是一个部署在公网的服务注册中心。
    frp的客户端,从内网连接frp服务端,然后注册自己的服务。
    frp服务端将这个服务对外暴露,并将外部的请求转发至frp客户端。

    这样,外网就可以访问内网设备部署的服务了。
    `

    https://github.com/fatedier/frp

  4. frp内网穿透原理及实战应用
    https://www.zjun.info/2020/frptest.html
    `
    NAT机制带来的问题
    内网穿透
    frp内网穿透的一个简单应用
    frp在内网渗透的应用
    `

    使用frp进行内网穿透
    https://sspai.com/post/52523

    利用 frp 进行内网穿透
    https://mritd.com/2017/01/21/use-frp-for-internal-network-wear/

    使用 frp 安全的暴露内网服务
    https://beginor.github.io/2020/08/05/expose-internal-network-service-securely-with-frp.html

  5. 代理服务器之 squid、lvs、nginx、haproxy之间的区别
    https://www.cnblogs.com/ywb123/p/17514940.html
    `
    代理服务可简单的分为正向代理和反向代理

    1、正向代理
    正向代理服务器:squid
    用于代理内部网络对 Internet 的连接请求(如 VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标 Web 服务器的 HTTP 请求先发送到代理服务器上,然后由代理服务器去访问 Web 服务器,并将 Web 服务器的 Response 回传给客户端。

    2、反向代理
    与正向代理相反,如果局域网向 Internet 提供资源,并让 Internet 上的其他用户可以访问局域网内资源,也可以设置一个代理服务器, 它提供的服务就是反向代理。反向代理服务器接受来自 Internet 的连接,然后将请求转发给内部网络上的服务器,并将 Response 回传给Internet 上请求连接的客户端。
    2.1 squid
    最古老的代理服务器
    2.2 lvs
    * 优点:抗负载能力强、是工作在网络4层之上仅作分发之用
    * 配置性比较低,这是一个缺点也是一个优点,简单不易出错
    * 工作稳定,抗负载能力很强,有完整的双机热备方案,如LVS(DR)+ Keepalived。
    * 无流量,LVS只分发请求,而流量并不从它本身出去
    * 应用范围比较广,几乎支持所有应用
    * 缺点:
    * 不支持正则表达式处理,不能做动静分离
    * 网站应用比较庞大的话,LVS/DR+Keepalived实施起来比较复杂
    2.3 nginx:
    * 优点:
    * 工作在七层之上,针对HTTP做分流策略,正则规则比haproxy更灵活
    * 对网络的稳定性依赖小
    * 安装配置简单
    * 高负载高并发低消耗
    * 不仅能做代理,还可以做web服务器
    * 还能缓存静态网页和图片
    * 社区活跃,第三方模块非常多
    * 缺点:
    * 适应范围较小,仅能支持http、https、Email协议。
    * 对后端服务器的健康检查,只支持通过端口检测,不支持url来检测。
    2.4 haproxy:
    * 优点:
    * HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段)
    * HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态。
    * HAProxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
    * HAProxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡
    * HAProxy负载均衡策略非常多,HAProxy的负载均衡算法现在具体有8种
    * 缺点:
    * 不支持POP/SMTP协议
    * 不支持SPDY协议
    * 不支持HTTP cache功能
    * 重载配置的功能需要重启进程
    * 多进程模式支持不够好

    3、squid正反向代理区分
    * 正向代理:Squid后面是客户端,客户端上网要通过Squid去上;
    * 反向代理:Squid后面是服务器,服务器返回给用户数据需要走Squid
    `

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注