当前位置: 华文星空 > 宠物

go proxy 实现反向代理

2022-06-17宠物

反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

【高品质代理ip免费试用】

代理代码

package main import ( "fmt" "net/http" "net/http/httputil" "net/url") func sayHello(w http.ResponseWriter, r *http.Request) { //这里定义代理目标地址,这里定义到本机9091端口 u, _ := url.Parse("http://127.0.0.1:9091/") proxy := httputil.NewSingleHostReverseProxy(u) proxy.ServeHTTP(w, r) } func main() { http.HandleFunc("/hello", sayHello) err := http.ListenAndServe(":9090", nil) if err != nil { fmt.Println("HTTP server failed,err:", err) return } }

最终目标代码

package main import ( "fmt" "net/http") func sayHello(w http.ResponseWriter, r *http.Request) { fmt.Println("hello,这里是s2服务里的say Hello") } func main() { http.HandleFunc("/hello", sayHello) err := http.ListenAndServe(":9091", nil) if err != nil { fmt.Println("HTTP server failed,err:", err) return } }

通过以上代码,可以看出,我是把 9090 的端口 sayHello 函数,代理到了本机 9091 端口的 sayHello 函数。