前一天小沃向大家介绍了下http代理服务器,但是由于这些代理服务器均是正向代理,需要客户端支持,如果客户端不支持,就无法工作,因此小沃今天教大家用go语言开发反向代理。
go语言是google最新推出的编程语言,拥有天生异步IO,高并发,执行性能好,生成文件是单个可执行文件等好处。其中最后一点经常被小沃用于开发一些工具软件。
go语言用于开发反向代理可以说就一句话。
代码如下:
package main import ( "net/http" "net/http/httputil" "net/url" ) func ServeHTTP(res http.ResponseWriter, req *http.Request) { remote, err := url.Parse("https://mirrors.aliyun.com") if err != nil { panic(err) } proxy := httputil.NewSingleHostReverseProxy(remote) req.Host = "mirrors.aliyun.com" proxy.ServeHTTP(res, req) } func main() { http.HandleFunc("/", ServeHTTP) err := http.ListenAndServe(":32236", nil); if err != nil { panic(err) } }
这里为什么要用mirrors.aliyun.com做案例,因为小沃就是用这一段代码解决的一个内网服务器无法连接外网,但是需要下载依赖的问题的,大家可以根据自己的需求修改为特定的域名,代理端口为固定的32236
文章作者:沃航科技