Iris-Go 웹 프레임 워크로 Golang의 ReverseProxy 기능을 연결할 수있는 사람 누구나. 나는 그것을 작동하게 할 수 없었다. 정규 net/http로 연결할 수 있습니다.Iris-Go 프레임 워크가있는 Golang ReverseProxy
func MultiHostReverseProxy(targets map[string]utils.Service) *httputil.ReverseProxy {
r := regexp.MustCompile(`\/proxy/(?P<Service>[a-zA-Z_-]*)(?P<Path>\/.*)`)
director := func(req *http.Request) {
if strings.HasPrefix(req.URL.Path, "/proxy/") {
temp := r.FindStringSubmatch(req.URL.Path);
if (len(temp) > 1) {
system := temp[1]
if val, ok := targets[system]; ok {
s := val.Host + ":" + val.Port
req.URL.Scheme = val.Scheme
req.URL.Host = s
req.URL.Path = temp[2]
if enc, ok := GetAxleHeader(req.Header); ok {
dec := utils.Decrypt(KEY, enc)
req.Header.Set(val.AuthHeader, dec)
req.Header.Set(AXLE_HEADER, "")
} else {
token, nq := utils.FindAxleToken(req.URL.RawQuery);
fmt.Printf("%s -> token : %s newQuery: %s\n", req.URL.RawQuery, token, nq);
if token != "" {
req.URL.RawQuery = nq
dec := utils.Decrypt(KEY, token)
req.Header.Set(val.AuthHeader, dec)
req.Header.Set(AXLE_HEADER, "")
}
}
}
}
}
}
return &httputil.ReverseProxy{Director: director}
}
어떻게이 역방향 프록시 개체를 홍채 프레임 워크와 함께 사용할 수 있습니까?
홍채를 사용하는 이유를 알 수 없습니다. http://www.florinpatan.ro/2016/10/why-you-should-not-use-iris-for-your-go.html?m=1 – JimB
당신은 httputi를 사용할 수 없습니다. 리버스 프록시, 왜냐하면 아이리스는 std lib net/http 패키지를 사용하지 않기 때문입니다. – JimB
@JimB 버전 5 이후, 아이리스는 net/http의 최상위에 구축되어 HTTP/2 기능을 완성합니다. – kataras