实现http反向代理完整流程(go+angular)
为什么代理 因为本人最近看了一本《DDoS攻击与防范深度剖析》,认识到了实现反向代理是防范DDoS的一种可行手段。因此本着好奇的心情,大概的了解一下go的http反向代理实现。 代理的分类 正向代理:隐藏真实的客户端向服务端请求,服务器服务端是透明。好比如:VPN。如下图所示 反向代理:真正的服务端的ip地址被隐藏。如下图所示 这里只介绍方向代理 反向代理的原理图 方向代理原理大概解说 从原理图中,可以看到整个过程是:客户端原本向正真的服务器发送请求,但是我们调皮的真正服务器不想暴露自己,因此他叫他的兄弟(代理服务器)暴露自己,先接收客户端发来的请求,并且查看请求是否合法,然后再发送给真正的服务器。 虽然原理是那么的简单。但是,但是,再客户端连接代理服务再连接真正的服务器的时候,还是有一些难点的 客户端如何调用API接口,是接收代理服务器的,还是真正的服务器的。哈哈哈,如果调用真正的服务器的接口的话,反向代理服务器就没有任何意义了。因此我们调用的是代理服务器,但是我们有如何调用代理服务器的接口,代理的服务器的接口又有什么的特点呢?我们先来看一下代理服务器的代码: package main import ( "log" "net" "net/http" "net/http/httputil" "net/url" ) type Pxy struct{} func (p *Pxy)