首页 > IT职业 > IT图书 > 初探 ReverseProxy 源码
如果❤️我的文章有帮助,欢迎点赞、关注。这是对我继续技术创作最大的鼓励。[更多系列文章在我博客] coderdao.github.io/
Golang 版本 1.16
Talk is cheap, show me the code
测试 代理服务器
$ curl 'http://127.0.0.1:2002/sda?sda=111'
# 2003 设置了 打印请求地址代码: upath := fmt.Sprintf("http://%s%sn", r.Addr, req.URL.Path)
http://127.0.0.1:2003/base/sda
RemoteAddr=127.0.0.1:51738,X-Forwarded-For=127.0.0.1,X-Real-Ip=
headers =map[Accept:[*/*] Accept-Encoding:[gzip] User-Agent:[curl/7.69.1] X-Forwarded-For:[127.0.0.1]]
查看 httputil.NewSingleHostReverseProxy() 函数, 便可以找到 ReverseProxy源码。 位于该路径下文件go/src/net/http/httputil/reverseproxy.go



ServeHTTP() 最终会在请求到达代理服务器, 有监听方法调起。调用链路为:
http.ListenAndServe(addr string, handler Handler)
-> Server.ListenAndServeTLS(certFile, keyFile)
-> Server.ServeTLS(ln, certFile, keyFile)
-> Server.Serve(l net.Listener)
-> go c.serve(connCtx)
-> serverHandler{c.server}.ServeHTTP(w, w.req)
所以 ReverseProxy 对象也实现了 ServeHTTP 方法 , 方法实现功能有:
这些都能在下面的代码实现中一一找到对应:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2831/viewspace-2797090/ ,如需转载,请注明出处,否则将追究法律责任。