但是,每当我运行此程序并将请求发送到PROXYURL/app1时,它都会代理TARGET1/directory/app1。我了解从ReverseProxy的描述中,这是预期的行为(将代理URL的子路径附加到目标)。但是,我想知道是否可以将代理URL子路径(/app1)映射到另一个目标URL,而无需将子路径附加到目标URL。

总而言之,我要

http://proxy.com/app1-> http://target1.com/directory

http://proxy.com/app2-> http://target2.com/directory2

不是(当前正在发生)

http://proxy.com/app1-> http://target1.com/directory/app1

http://proxy.com/app2-> http://target2.com/directory2/app2

我发现通过提供自定义的Director功能而不是使用NewSingleHostReverseProxy()(https://golang.org/src/net/http/httputil/reverseproxy.go)提供的默认功能,我能够实现我想要的行为。我通过将req.URL.Path设置为target.Path而不添加原始的req.URL.Path来完成此操作。除此之外,director功能与reverseproxy.go中的功能非常相似。