极客时间返利平台,你可以在上边通过山月的链接购买课程,并添加我的微信 (shanyue94) 领取返现。

# http proxy 的原理是什么

更多描述

webpack-dev-server 可以设置 proxy,nginx 也可以设置

Issue

欢迎在 Gtihub Issue 中回答此问题: Issue 82 (opens new window)

todo

# HTTP 代理的原理

代理服务器会自动提取请求数据包中的HTTP请求数据发送给服务端,并服务端的HTTP响应数据转发给发送请求的客户端,HTTP 代理服务器使用的端口通常是 8080。

  • 对于 Web 客户端来说,代理扮演的服务器角色,接收请求(Request),返回响应(Response)。
  • 对于 Web 服务器来说,代理扮演的客户端角色,发送请求(Request),接收响应(Response)。

# HTTP 代理步骤

  • 客户端代理发起TCP连接
  • 代理接收客户端的连接,双方建立连接
  • 客户端代理发送HTTP请求,请求内容和没有 HTTP 代理的内容完全相同;
  • 代理解析HTTP请求
  • 代理服务器发起TCP连接
  • 服务器接收代理的连接;
  • 代理服务器发送HTTP请求(这个 HTTP 请求是基于用户的 HTTP 请求,可能会有修改
  • 服务器发送响应代理
  • 代理发送响应给发送请求的客户端

# 不同 HTTP 代理的区别:

  • 全匿名代理,不改变客户端的 request fields(请求信息),使服务器端看来就像有个真正的客户浏览器在访问。客户端的真实 IP 是隐藏起来的。
  • 普通匿名代理,能隐藏客户端的真实 IP,但会更改客户端的 request fields(请求信息),服务器端有可能会被认为使用了代理。
  • 透明代理(简单代理),改变客户端的 request fields(请求信息),并会传送真实 IP 地址。

# HTTPS 代理

HTTPS 代理有多种做法,通常使用CONNECT method,通过 proxy 建立一条隧道(隧道代理),这样,proxy无法解密数据;此外,还有一种类似于中间人攻击的代理手法。

# CONNECT 方法代理步骤

  • 客户端代理发起CONNECT请求;
  • 代理服务端发起TCP连接请求;
  • 当 TCP 连接建立完成后, 代理客户端返回HTTP/1.0 OK,隧道建立完成;
  • 代理转发客户端的数据给服务器,转发服务器的数据给客户端,直到任何一方连接结束;

内容参考HTTP、HTTPS 代理分析及原理 (opens new window)

Last Updated: 2/15/2022, 12:06:24 PM