1. 正向代理

  1. 什么是正向代理

正向代理,就是一个位于客户端和原始服务器之前的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并且指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端,客户端才能使用正向代理。

  1. 正向代理工作流程

  1. 客户端向正向代理服务器发送请求。

  2. 正向代理服务器接收请求后,将其转发给目标服务器。

  3. 目标服务器处理请求并返回响应给正向代理服务器。

  4. 正向代理服务器将响应返回给客户端。

  1. 正向代理服务器的用途

  • 突破访问限制

通过代理服务器,可以突破自身IP访问限制,访问国外网站,教育网等。

  • 提高访问速度

通常代理服务器都设置一个较大的硬盘缓冲区,会将部分请求的响应保存到缓冲区中,当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息,传给用户,以提高访问速度。

  • 隐藏客户端真实IP

上网者也可以通过这种方法隐藏自己的IP,免受攻击。

  1. Nginx实现正向代理

下面是一个简单的Nginx正向代理的配置示例


http { server { listen 80; location / { proxy_pass http://target_server; } } } upstream target_server { server target_ip:target_port; }

在上面的配置中:

listen指令指定了代理服务器监听的端口;

location指令指定了对哪些URL进行代理;

proxy_pass指令指定了目标服务器的地址;

upstream指令定义了目标服务器的地址和端口。

  1. Nginx正向代理的实现原理

Nginx正向代理的实现原理可以分为以下几个步骤:

  • 接收客户端请求:Nginx监听指定的端口,接收客户端的请求。

  • 解析请求:Nginx解析客户端的请求,获取请求的URL、方法和头部等信息。

  • 转发请求:Nginx根据配置的代理规则,将请求转发给目标服务器。在转发请求时,Nginx会将客户端的请求头部和请求体一并发送给目标服务器。

  • 接收目标服务器的响应:目标服务器处理完请求后,将响应发送给Nginx。

  • 返回响应给客户端:Nginx将接收到的响应返回给客户端。

  • 缓存响应(可选):Nginx可以缓存目标服务器的响应,避免重复请求相同的内容,提高性能和响应速度。

  1. 反向代理

  1. 什么是反向代理

反向代理(reverse proxy):是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

  1. 反向代理工作流程

  • 客户端向反向代理服务器发送请求。

  • 反向代理服务器接收请求后,将其转发给目标服务器。

  • 目标服务器处理请求并返回响应给反向代理服务器。

  • 反向代理服务器将响应返回给客户端,而客户端以为它是与反向代理通信。

所以,反向代理,其实是"代理服务器"代理了"目标服务器",去和"客户端"进行交互。

通过反向代理服务器访问目标服务器时,客户端是不知道真正的目标服务器是谁的,甚至不知道自己访问的是一个代理。

  1. 反向代理服务的用途

  • 隐藏服务器真实IP

使用反向代理,可以对客户端隐藏服务器的IP地址。

  • 负载均衡

反向代理服务器可以做负载均衡,根据所有真实服务器的负载情况,将客户端请求分发到不同的真实服务器上。

  • 提高访问速度

反向代理服务器可以对于静态内容及短时间内有大量访问请求的动态内容提供缓存服务,提高访问速度。

  • 提供安全保障

反向代理服务器可以作为应用层防火墙,为网站提供对基于Web的攻击行为(例如DoS/DDoS)的防护,更容易排查恶意软件等。还可以为后端服务器统一提供加密和SSL加速(如SSL终端代理),提供HTTP访问认证等。

  1. 反向代理的实现方法

  • 使用Nginx实现


http{ #服务器代理 #监听的客户 使用80的端口 看用户端口 server{ listen 80; #查看自己定义 反向代理name 名称要与host 保持一致 匿名访问 网址 server_name xxx.xx.com; location / { #发起http请求 看使用端口 #proxy_pass http://localhost:8080; #尽可以有一个 x proxy_pass http://localWindows; #此处使用了负载均衡 策略 } } #发布多台服务器 upstream localWindows{ server localhost:8080 ; server localhost:8081 ; server localhost:8082 ; } }

负载均衡 配置多台实现负载均衡,减轻服务器的压力

轮询策略 根据配置文件,依次访问服务器。 一般默认为 轮询策略。

权重策略 根据服务器性能]决定 ,性能越高则承担的压力越大。


upstream localWindows { server localhost :8080 weihgt=6; server localhost:8081 weight=3; #也可以 将localhost直接写成127.0.0.1 (目的主要看访问) }

  • 虚拟URL host文件配置

  • ssh反向代理(实现内网穿透)

  1. 正向代理和反向代理的区别

  • 位置不同:正向代理位于客户端与目标服务器之间;而反向代理位于目标服务器与客户端之间。

  • 目的不同:正向代理主要用于保护用户的隐私和安全;而反向代理主要用于负载均衡、缓存和安全保护等。

  • 透明度不同: 正向代理需要对客户端进行配置;而反向代理对客户端是透明的,不需要进行任何配置。

  • 流量控制:正向代理可以控制流量的大小和速度;而反向代理主要关注服务器的负载均衡和流量分发。

  • 安全性: 正向代理隐藏了用户的真实IP,增加了匿名性;而反向代理可以保护后端服务器的安全,对请求进行过滤和检查。

  • 负载均衡:正向代理可以通过配置来实现简单的负载均衡;而反向代理则是实现负载均衡的常见方式。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐