瀏覽代碼

ReverseProxy: use Rewrite to replace Director (#4005)

* display go version in make

* ReverseProxy: use Rewrite to replace Director
fatedier 11 月之前
父節點
當前提交
518ca2ceb2
共有 5 個文件被更改,包括 10 次插入5 次删除
  1. 1 1
      Makefile
  2. 2 1
      pkg/plugin/client/http2https.go
  3. 2 1
      pkg/plugin/client/https2http.go
  4. 2 1
      pkg/plugin/client/https2https.go
  5. 3 1
      pkg/util/vhost/http.go

+ 1 - 1
Makefile

@@ -1,4 +1,4 @@
-export PATH := $(GOPATH)/bin:$(PATH)
+export PATH := $(PATH):`go env GOPATH`/bin
 export GO111MODULE=on
 LDFLAGS := -s -w
 

+ 2 - 1
pkg/plugin/client/http2https.go

@@ -53,7 +53,8 @@ func NewHTTP2HTTPSPlugin(options v1.ClientPluginOptions) (Plugin, error) {
 	}
 
 	rp := &httputil.ReverseProxy{
-		Director: func(req *http.Request) {
+		Rewrite: func(r *httputil.ProxyRequest) {
+			req := r.Out
 			req.URL.Scheme = "https"
 			req.URL.Host = p.opts.LocalAddr
 			if p.opts.HostHeaderRewrite != "" {

+ 2 - 1
pkg/plugin/client/https2http.go

@@ -50,7 +50,8 @@ func NewHTTPS2HTTPPlugin(options v1.ClientPluginOptions) (Plugin, error) {
 	}
 
 	rp := &httputil.ReverseProxy{
-		Director: func(req *http.Request) {
+		Rewrite: func(r *httputil.ProxyRequest) {
+			req := r.Out
 			req.URL.Scheme = "http"
 			req.URL.Host = p.opts.LocalAddr
 			if p.opts.HostHeaderRewrite != "" {

+ 2 - 1
pkg/plugin/client/https2https.go

@@ -55,7 +55,8 @@ func NewHTTPS2HTTPSPlugin(options v1.ClientPluginOptions) (Plugin, error) {
 	}
 
 	rp := &httputil.ReverseProxy{
-		Director: func(req *http.Request) {
+		Rewrite: func(r *httputil.ProxyRequest) {
+			req := r.Out
 			req.URL.Scheme = "https"
 			req.URL.Host = p.opts.LocalAddr
 			if p.opts.HostHeaderRewrite != "" {

+ 3 - 1
pkg/util/vhost/http.go

@@ -58,7 +58,9 @@ func NewHTTPReverseProxy(option HTTPReverseProxyOptions, vhostRouter *Routers) *
 	}
 	proxy := &httputil.ReverseProxy{
 		// Modify incoming requests by route policies.
-		Director: func(req *http.Request) {
+		Rewrite: func(r *httputil.ProxyRequest) {
+			r.SetXForwarded()
+			req := r.Out
 			req.URL.Scheme = "http"
 			reqRouteInfo := req.Context().Value(RouteInfoKey).(*RequestRouteInfo)
 			oldHost, _ := httppkg.CanonicalHost(reqRouteInfo.Host)