golang如何创建反向代理

Posted

技术标签:

【中文标题】golang如何创建反向代理【英文标题】:how to create a reverse proxy in golang 【发布时间】:2021-12-26 18:24:49 【问题描述】:

我想使用 stl 库中的 net 包在 golang 中制作反向代理。使用 httputil 创建反向代理。但是当我向代理服务器发出请求时,它会返回 404 错误。

这是代理服务器代码

package main

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

func main() 
    demoUrl , err := url.Parse("http://localhost:1000/run/")
    if err!=nil
        log.Fatal(err)
        return
    
    proxy := httputil.NewSingleHostReverseProxy(demoUrl)
    http.HandleFunc("/", func(rw http.ResponseWriter, r *http.Request) 
        proxy.ServeHTTP(rw, r)
    )
    http.ListenAndServe(":2000", nil)

这里是源服务器代码:

package main

import (
    "net/http"
)

func main()
    http.HandleFunc("/run", func(w http.ResponseWriter, r *http.Request)
        w.Write([]byte("I am running"))
    )
    http.ListenAndServe(":1000", nil)

请告诉我这里缺少什么以及如何修复错误!请

【问题讨论】:

【参考方案1】:

路由器不匹配。 这将按预期工作。

...
func main()
    http.HandleFunc("/run/", func(w http.ResponseWriter, r *http.Request)
        w.Write([]byte("I am running"))
    )
    http.ListenAndServe(":1000", nil)

...

【讨论】:

谢谢。这是我身边的一个愚蠢的错字。

以上是关于golang如何创建反向代理的主要内容,如果未能解决你的问题,请参考以下文章

golang 实现HTTP代理和反向代理

golang实现正/反向代理服务

golang 反向代理reverseproxy源码分析

视频流中的导航,golang中的反向代理

由于 CORS,Nginx 反向代理后面的 Golang 应用程序不会接受 ajax 请求

使用golang反向代理统计api访问次数