type
status
date
slug
summary
tags
category
icon
password
个人感觉这两个概念技术是很相似的,都是接收客户端的请求,并将这些请求转发给另一台服务器,然后将服务器的响应返回给客户端
但是他们的使用场景和目标又有很大不同的。

正向代理

正确叫法是:Forward Proxy,译为:正向代理、前置代理、前向代理、客户端代理
主要是面向客户端的。最大的特点就是,在代理的过程中隐藏了真实的请求客户端服务端不知道真实的客户端是谁。
比如我们耳熟能详的VPN做的事情,就是这个。
也就是说,必须在客户端上面做一些操作,让你的流量全部通过代理服务器去访问网络,外部识别到的都是你的代理服务器的身份,无法追踪到你的实际ip。
notion image
如上图所示, 所有客户端(Client A、B)全部都会被伪装 C 来访问访问外部网络。
很多公司为了内部网络安全,都会做网关进行管理。

反向代理

正确叫法是:Reverse Proxy,译为:反向代理、反向代理服务器、逆向代理、服务器代理
主要是面向服务端的,最大的特点就是,从客户端角度来看,并不知道真实访问的服务器是谁,只知道公开的服务器入口。
notion image
如上图所示,客户端都是去访问 google.com 但是并不知道最终的服务器实际地址。
显而易见的,这样就很轻松的将客户端请求分发到了多台服务器,实现负载均衡,并且还能保护实际服务器,当然还有一些其他的好处。
下面用Nginx来列举一些反向代理的使用场景:

1. 负载均衡

你可以使用Nginx将进入的请求分发到多台后端服务器。这在配置文件中看起来可能像这样:
在这个配置中,upstream 指令定义了一个包含多个服务器的服务器组。然后,在 location 块中,proxy_pass 指令将客户端的请求转发到 backend 服务器组中的服务器。
 
这里默认采用的是轮询的负载均衡方法。
Nginx会按照服务器的定义顺序,依次将每个新的请求转发到不同的后端服务器。如果所有的后端服务器对于请求的处理速度都大致相同,这种方法是有效的。
 
加权轮询(Weighted Round Robin)
这是轮询的扩展。你可以为每个后端服务器指定一个权重(weight),权重较高的服务器将接收更多的请求。
这在后端服务器性能不均匀时很有用。配置看起来可能像这样:
在这个例子中,backend1.example.com 由于权重设为3,将接收三倍于其他服务器的请求。
 
最少连接(Least Connections)
这种方法会将新的请求转发到当前活跃连接数最少的服务器,适合处理请求处理时间长短不一的情况。
配置看起来可能像这样:
 
IP Hash
这种方法根据客户端的IP地址决定将请求发送到哪个服务器,可以用于实现会话持久性(session persistence)。
配置看起来可能像这样:
在这个例子中,ip_hash 指令让 Nginx 使用 IP Hash 的方法来分配请求。具体来说,Nginx 会根据客户端的 IP 地址计算一个哈希值,然后根据这个哈希值将请求分发给某一个特定的后端服务器。因此,来自同一个客户端 IP 的请求总是会被发送到同一台后端服务器,这样就可以实现会话保持。
 
还有其他一些规则,这里就不一一介绍了。

2. SSL终端

在Nginx中,你可以配置反向代理来处理所有的SSL/TLS握手过程。配置看起来可能像这样:
在这个配置中,listen 指令让Nginx在443端口(默认的HTTPS端口)上监听请求,ssl_certificatessl_certificate_key 指定了SSL证书和私钥的位置。然后,所有的HTTPS请求都会被转发到 backend 服务器组。
 
简单的说,只需要在你的代理服务器上配置好SSL证书,进行https访问,访问实际服务器的时候,采用http(非加密的方式)。
这种将解密后的请求转发到后端服务器,可以大大减轻后端服务器的计算压力。

3. 缓存

Nginx也可以配置为缓存代理,将后端服务器的响应结果(如网页、图片、视频等)暂存到本地磁盘或内存中,提高对相同请求的处理速度。
当收到相同的请求时,直接从缓存中提供服务,而无需再次访问后端服务器,这可以大大提高服务的响应速度和后端服务器的处理能力。另外,反向代理还可以对响应内容进行优化,如压缩、添加缓存控制头等。
 
某种意义上来说我们使用的CDN服务器,采用的就是类似的做法。
配置看起来可能像这样:
在这个配置中,proxy_cache_path 指令定义了缓存的存储路径和其他参数,proxy_cache 指令使得在 / 位置的请求启用缓存。
 

4. 安全

反向代理还可以提供额外的安全层,它可以隐藏后端服务器的信息,防止恶意攻击直接达到后端服务器。
同时,它还可以实施各种安全策略,如阻止来自特定IP地址的请求,限制并发连接数等。
 

反向代理举例

ChatAPI反代

notion image
这样的话就可以用 chatapi.xxxxx.com 去替代 api.openai.com 了,解决了在国内直接访问的问题

还有很多其他的应用场景,这里就不一一列举了。
有问题的话,可以在下方评论区留言,一起交流。
 
 
相关文章
GPT-4 API全面开放Unity-VisionOS开发(一)
  • Twikoo
PolarisAspire
PolarisAspire
乐于探索互联网新技术,程序开发者
公告
🎉欢迎来到Polaris的小站🎉
免责声明
⚠️ 本站内容仅代表个人观点,可以转载,但请注明出处。
⚠️ 本人分享内容仅供学习参考使用,请勿用于其他用途。
关于我
一枚混迹多年的程序员
做过一些项目
喜欢做知识分享
有问题欢迎联系我
TG交流群组
小卖部
流媒体合租动态