带缓存的http代理服务器(二)

OK,我来更新了。

先吐槽下近况。期末考试刚结束不久,我还留在学校里,然后前天晚上突然收到参加全国电子商务竞赛,然后昨天一天在和老师、队友们一起做文档。

吐槽完毕。

项目地址:https://code.csdn.net/sakeven/httpproxy

首先我们来了解下代理服务器。

代理服务器

根据导师建议,买了一本《HTTP 权威指南》来看,大致粗略浏览了一番。根据书本和网络资料,代理服务器我是这样理解的:
上图~

代理服务器接收然后转发客户端发来的请求(Request),接着从服务器收到响应(Response)并将响应转发给客户端。

应用

  1. 由于代理服务器在接收到客户端的Request之后可以修改Request,所以可以作为过滤器和访问控制
  2. 代理服务器工作时可以隐藏客户端的IP等安全信息,可以作为安全防火墙。
  3. 代理服务器可以缓存经常访问的网页资源,加速客户端的访问速度。
  4. 还可以假扮web 服务器,称为反向代理(reverse proxy),提高服务器性能。

实现

提案要求是用golang实现带缓存的HTTP代理服务器,所以根据golang已有的标准包,考虑了两种实现方案。
  1. 采用socket Tcp底层来写,需要自己解析http协议,实现后发现bug太多和难度较大,就放弃了。
  2. 利用"net/http"中提供各类函数、结构、接口,方便实现HTTP代理服务器。
目前实现了HTTP中“GET”,“POST”,“HEAD”等除“CONNECT”之外的常用方法,其中主要一点是,去除客户端发来的Request的与proxy有关的headers。
代码如下:
//RmeProxyHeaders remove some headers ralated with proxy.
func RmProxyHeaders(req *http.Request) {
	req.RequestURI = ""
	req.Header.Del("Proxy-Connection")
	req.Header.Del("Connection")
}

其他具体处理http请求的暂且不表。

后记

明天就要回家咯~。但是暑假事情确实挺多的,有开源夏令营,还有那个全国电子商务竞赛,如果进了初赛,7月份还要准备复赛,然后还有7月下旬开始的ACM集训。想想都累 哭
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值