通过goproxy(phuslu)实现HTTP/2代理 - 翻跃 瓷院

通过goproxy(phuslu)实现HTTP/2代理

作者:liyangyijie / 时间:March 7, 2016 /分类:翻越奥义
goproxy的vps版本,实质是上HTTP/2代理。
如果看过wzyboy关于搭建HTTP/2代理的文章,这里的govps=nghttpx +Squid。
Golang版本不需要复杂依赖,编译好的二进制文件,可以在适合的系统中直接使用。
如果不想重复编译的话,1、2步可以省掉,直接使用编译好的适合自己系统的二进制文件。
1,搭建简易Golang环境
参见http://www.fanyueciyuan.info/fq/google-nginx-ezgoo.html中的搭建Golang环境。
Golang选择1.6以及以上版本。
2,编译二进制文件
获取需要的额外库

go get github.com/golang/glog go get github.com/phuslu/http2

获取goproxy服务器版本源码

git clone -b server https://github.com/phuslu/goproxy.git

使用gox编译文件,这里以编译用于32位linux的文件为例。

cd goproxy/vps gox -osarch=’linux/386’ -ldflags=’-s’

稍等片刻,可见编译好的文件。
3,服务端配置
可以把生成的文件放到/opt文件夹下,便于管理。
习惯性选择使用supervisor来解决进程守护的问题,你也可选择其他方法。
下面是supervisor基本配置文件,debian下直接放到/etc/supervisor/conf.d文件夹下

[program:govps] command=/opt/govps -addr=’:25’ -auth=’user:pass’ -certFile=’/my.crt’ -keyFile=’/my.key’ autostart=true autorestart=true user=root

用到了25端口,需要root权限。
govps可以自动生成服务端所需要的自签证书,上面的certFile、keyFile项目可以不填写,不过这里强烈建议使用购买的证书或者免费证书。如果使用Le t’s Encrypt,几乎就是秒签。
4,客户端配置
无论是python版的GoA,还是Golang版的GoP都是兼容服务端的。甚至只要支持HTTPS代理的客户都可以,例如MEOW。
GoA版本需要把proxy.user.ini文件中的vps段落参考如下进行修改

[vps] enable = 1 listen = 127.0.0.1:8088 fetchserver = https://user:pass@9.9.9.9:25/

不过最建议使用的还是switchyomega+chrome,不需要什么客户端,原生态HTTP/2支持。
switchyomega中协议选择https,填上服务器的域名,最后完成鉴权信息。
在直接使用switchyomega+chrome+starSSL证书情况下,开网页看视频的体验较之原版ss有极大提升,但是服务器端内存占用较大,10~25兆 左右。
5,搭建参考脚本
这里可参考我的脚本进行服务器的安装,这里直接使用的是Let’s Encrypt的证书。
一键安装脚本