Ami*_*ine 10 proxy reverse-proxy go pydio

我想在主机上运行在VM中运行的两个或多个Web应用程序(不同的端口和一些时间在同一端口下的不同目录中),因为我需要在用户访问这些应用程序之前对其进行记录,我无法使用像Nginx或Apache这样的静态代理.

所以这是我的情况:

192.168.1.1:是主机IP
192.168.1.2:是VM ip

在VM内我有这个:

192.168.1.2/owncloud:owncloud地址
192.168.1.2:8080:另一个应用程序
192.168.1.2:8888:第3个应用程序

我想要这个:

192.168.1.1/app1 - > 192.168.1.2/owncloud
192.168.1.1/app2 - > 192.168.1.2:8080
192.168.1.1/app2 - > 192.168.1.2:8888

我试图使用golang httputil.ReverseProxy来实现这种路由,但没有取得多大成功:我的代码基于这项工作:gist

package main

import(
    "log"
    "net/url"
    "net/http"
    "net/http/httputil"
)

func main() {
    remote, err := url.Parse("http://192.168.1.2:8080")
    if err != nil {
            panic(err)
    }

    proxy := httputil.NewSingleHostReverseProxy(remote)
    http.HandleFunc("/app2", handler(proxy))
    err = http.ListenAndServe(":80", nil)
    if err != nil {
            panic(err)
    }
}

func handler(p *httputil.ReverseProxy) func(http.ResponseWriter, *http.Request) {
    return func(w http.ResponseWriter, r *http.Request) {
        log.Println(r.URL)
        r.URL.Path = "/"                
            p.ServeHTTP(w, r)
    }
}


我已经更改了vm ip地址:192.168.1.2而不是192.168.1.1