正向代理、反向代理

正向代理与反向代理的区别与联系

在网络通信中,有时候我们不能直接访问目标服务器,或者目标服务器不能直接响应客户端的请求,这时候就需要使用代理服务器来作为中间人,帮助我们完成请求和响应的转发。根据代理的对象不同,我们可以把代理分为正向代理和反向代理。那么它们有什么区别和联系呢?本文将从以下几个方面来介绍:

  • 什么是正向代理和反向代理
  • 正向代理和反向代理的作用和优势
  • 正向代理和反向代理的区别和联系
  • 如何使用nginx配置正向代理和反向代理

什么是正向代理和反向代理

正向代理

正向代理是指客户端通过代理服务器来访问目标服务器,目标服务器不知道真正的客户端是谁,只知道请求来自于代理服务器。正向代理可以隐藏客户端的真实身份,让客户端访问一些原本无法访问的资源,比如Google、YouTube等。

反向代理

反向代理是指客户端通过代理服务器来访问目标服务器集群,客户端不知道真正的目标服务器是哪一个,只知道请求发送到了代理服务器。反向代理可以隐藏目标服务器的真实地址,让目标服务器集群对外提供统一的服务接口,实现负载均衡、安全防护等功能。

正向代理和反向代理的作用和优势

正向代理的作用和优势
  • 访问原来无法访问的资源,如Google、YouTube等
  • 可以做缓存,加速访问资源
  • 对客户端访问授权,上网进行认证
  • 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
反向代理的作用和优势
  • 保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网
  • 负载均衡,通过反向代理服务器来优化网站的负载
  • 加密/SSL加速:将SSL加密工作交由配备了SSL硬件加速器的反向代理来完成
  • 提供缓存服务 ,加速客户端访问
  • 数据统一压缩 节约带宽
  • 为网络带宽不好的网络提供服务
  • 统一的访问权限控制

正向代理和反向代理的区别和联系

区别
  • 从定义上看,正向代理是为客户端服务的,反向代理是为目标服务器服务的
  • 从对象上看,正向代理隐藏了真实的客户端地址,反向代理隐藏了真实的目标服务器地址
  • 从位置上看,正向代理位于客户端和目标服务器之间,反向代理位于目标服务器集群之前
联系
  • 从功能上看,正向代理和反向代理都是进行请求和响应的转发
  • 从结构上看,正向代理和反向代理都需要一个或多个中间人(即proxy)来完成转发任务
  • 从协议上看,正向代理和反向代理都可以使用HTTP或HTTPS协议来进行通信

如何使用nginx配置正向代理和反向代理

nginx是一款高性能的HTTP服务器和反向代理服务器,它可以用来实现正向代理和反向代理的功能。本节将介绍如何使用nginx来配置正向代理和反向代理,并给出一些示例代码。

nginx配置正向代理

正向代理是指客户端通过代理服务器来访问目标服务器,目标服务器不知道真正的客户端是谁,只知道请求来自于代理服务器。正向代理可以让客户端访问一些原本无法访问的资源,比如Google、YouTube等。

要实现正向代理,需要在nginx.conf文件中添加以下内容:

http {
    ...
    server {
        listen 8080; #监听8080端口作为代理服务器
        
        resolver 8.8.8.8; #使用Google DNS解析域名
        
        location / { 
            proxy_pass $scheme://$host$request_uri; #将请求转发到目标服务器
            
            proxy_set_header Host $host; #设置请求头中的Host为目标服务器域名
            
            proxy_set_header X-Real-IP $remote_addr; #设置请求头中的X-Real-IP为客户端真实IP
            
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #设置请求头中的X-Forwarded-For为客户端真实IP和代理服务器IP
            
            proxy_set_header X-Forwarded-Proto $scheme; #设置请求头中的X-Forwarded-Proto为客户端使用的协议(http或https)
            
            proxy_connect_timeout 300; #设置连接超时时间为300秒
            
            proxy_read_timeout 300; #设置读取超时时间为300秒
            
            proxy_send_timeout 300; #设置发送超时时间为300秒
        }
    }
}

这样,我们就可以通过访问http://localhost:8080/来访问任意目标服务器的资源,比如http://localhost:8080/www.google.com/。nginx会将请求转发到目标服务器,并将响应转发回客户端。同时,nginx会在请求头中添加一些信息,来表示这是一个代理请求。

nginx配置反向代理

反向代理是指客户端通过代理服务器来访问目标服务器集群,客户端不知道真正的目标服务器是哪一个,只知道请求发送到了代理服务器。反向代理可以让目标服务器集群对外提供统一的服务接口,实现负载均衡、安全防护等功能。

要实现反向代理,需要在nginx.conf文件中添加以下内容:

http {
    ...
    #定义一个上游服务器组,用于存放目标服务器的地址
    upstream backend {
        server 192.168.1.100:8080; #第一个目标服务器
        server 192.168.1.101:8080; #第二个目标服务器
        server 192.168.1.102:8080; #第三个目标服务器
    }
    
    server {
        listen 80; #监听80端口作为代理服务器
        
        location / { 
            proxy_pass http://backend; #将请求转发到上游服务器组
            
            proxy_set_header Host $host; #设置请求头中的Host为代理服务器域名
            
            proxy_set_header X-Real-IP $remote_addr; #设置请求头中的X-Real-IP为客户端真实IP
            
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #设置请求头中的X-Forwarded-For为客户端真实IP和代理服务器IP
            
            proxy_set_header X-Forwarded-Proto $scheme; #设置请求头中的X-Forwarded-Proto为客户端使用的协议(http或https)
            
            proxy_connect_timeout 300; #设置连接超时时间为300秒
            
            proxy_read_timeout 300; #设置读取超时时间为300秒
            
            proxy_send_timeout 300; #设置发送超时时间为300秒
        }
    }
}

这样,我们就可以通过访问http://localhost/来访问目标服务器集群的资源。nginx会根据一定的算法(默认是轮询)选择一个目标服务器,并将请求转发到该服务器,并将响应转发回客户端。同时,nginx会在请求头中添加一些信息,来表示这是一个代理请求。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值