为了账号安全,请及时绑定邮箱和手机立即绑定

具有多个应用程序的 Golang 反向代理

具有多个应用程序的 Golang 反向代理

Go
MYYA 2021-07-16 15:02:04
我想从主机为在 VM 中运行的两个或多个 Web 应用程序(不同的端口和同一端口下的不同目录中的某个时间)提供服务,因为我需要用户先登录,然后才能访问我无法使用的那些应用像 Nginx 或 Apache 这样的静态代理。所以这是我的情况:192.168.1.1:是主机ip192.168.1.2:是VM ip在虚拟机内部,我有这个:192.168.1.2/owncloud : owncloud 地址192.168.1.2:8080 : 另一个应用程序192.168.1.2:8888 : 第三个应用程序我想要这个:192.168.1.1/app1 --> 192.168.1.2/owncloud192.168.1.1/app2 --> 192.168.1.2:8080192.168.1.1/app2 --> 192.168.1.2:8我曾尝试使用 golang httputil.ReverseProxy 来实现此路由,但没有取得多大成功:我的代码基于此工作:gistpackage mainimport(    "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
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 252 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信