分享
  1. 首页
  2. 主题
  3. Go问与答

golang httputil.NewSingleHostReverseProxy 反向代理使用问题

awol2010ex · · 2190 次点击 · 开始浏览 置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

请教一个问题 使用 httputil.NewSingleHostReverseProxy 反向代理一个spring boot 的 服务。 func NewGinProxy(upstream string, prefix string) (*ProxyRouter, error) { target, err := url.Parse(upstream) if err != nil { return nil, err } targetQuery := target.RawQuery director := func(req *http.Request) { req.Host = target.Host // -- 加入这句 -- req.URL.Scheme = target.Scheme req.URL.Host = target.Host req.URL.Path = singleJoiningSlash(target.Path, req.URL.Path[len(prefix):len(req.URL.Path)]) if targetQuery == "" || req.URL.RawQuery == "" { req.URL.RawQuery = targetQuery + req.URL.RawQuery } else { req.URL.RawQuery = targetQuery + "&" + req.URL.RawQuery } //if _, ok := req.Header["User-Agent"]; !ok { // explicitly disable User-Agent so it's not set to default value //req.Header.Set("User-Agent", "") //} req.Header.Set("HTTP_X_FORWARDED_FOR", req.RemoteAddr) } transport := &http.Transport{ Proxy: http.ProxyFromEnvironment, DialContext: (&net.Dialer{ Timeout: 30 * time.Second, KeepAlive: 30 * time.Second, DualStack: true, }).DialContext, ForceAttemptHTTP2: false, MaxIdleConns: 100, IdleConnTimeout: 90 * time.Second, TLSHandshakeTimeout: 10 * time.Second, ExpectContinueTimeout: 100 * time.Second, } return &ProxyRouter{ proxy: &httputil.ReverseProxy{Director: director, Transport: transport}, }, nil } //反向代理网关 func (p *ProxyRouter) Handler(c *gin.Context) { p.proxy.ServeHTTP(c.Writer, c.Request) } func main() { router := gin.Default() port := "30041" biz_url := "http://127.0.0.1:30021/" biz_path := "/biz" fmt.Println("端口:", port) //业务服务反向代理目标 g, _ := NewGinProxy(biz_url, biz_path) router.Any("/biz/*all", g.Handler) router.Run(":" + port) } Content-Type: application/x-www-form-urlencoded 在spring boot 端使用 request.getParameter ,就会出现 类似 http: proxy error: http: ContentLength=2886 with Body length 0 的错误

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
2190 次点击
3 回复 | 直到 2025年05月12日 09:01:55
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)