跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 在 golang 中使用反向代理, 怎么处理代理失效的问题
未分類
7 10 月 2020

在 golang 中使用反向代理, 怎么处理代理失效的问题

在 golang 中使用反向代理, 怎么处理代理失效的问题

資深大佬 : prenwang 3

如下代码, 使用了 echo 框架, 将主程序 /xy/* 的请求代理到 http://xy.abc.com/xy/*

proxy := httputil.NewSingleHostReverseProxy(“http://xy.abc.com”)

e.Any(“/xy/*”, echo.WrapHandler(proxy))

实际使用过程中发现很多不稳定, 用着用着 404 了, 如果 http://xy.abc.com 后启动, 主程序的代理也不生效, 这个用法感觉很原始,需要自己去处理状态检测。

有什么好的处理办法吗

大佬有話說 (3)

  • 資深大佬 : cupen

    你的描述比较模糊.

    > 实际使用过程中发现很多不稳定, 用着用着 404 了
    如果是 echo 返回了 404, bug 得去 echo 开发者那去问下.

    > 如果 http://xy.abc.com 后启动, 主程序的代理也不生效
    不生效是指 404 还是 502 ? 也得去看 echo 开发者去问下.

    > 这个用法感觉很原始,需要自己去处理状态检测。
    通常反向代理通常只负责转发请求, 并不负责返回 404. 报错或超时了会返回 502.
    高级点确实需要健康检查, 比如定期给后端发送 HEAD /healthy . 收到 200 则认为 ok 否则认为挂球.

  • 資深大佬 : axex

    这种用法有些罕见啊,一般都是 nginx 、envoy 、traefik 等专门来反向代理、负载均衡。

  • 主 資深大佬 : prenwang

    @cupen
    @axex

    实际项目中,有几个不同的子系统模块,使用了其他语言 node,php 开发,和主系统一样都是提供 json api 的 webserver

    所以在主程序这里对所有前端请求做 分发, 由于在前端直接调用子系统的 API 会有一些问题, 比如跨域的兼容性, 统一权限拦截处理,子系统是没有权限判断的,统一在主系统 webserver 处理。

    这应该算是比较简单的微服务调用吧

    现在处理有了一点进展, 主系统处理了一个大 bug, 由于 grpc 连接处理不当导致的内存泄露(大量连接没有关闭)。解决这个 bug 后截止为止, 这个反向代理一直正常。但不能确定是不是 bug 引起的问题,应该是很有相关性, 继续观察。

    http://xy.abc.com 后启动, 主程序的代理也不生效, 这个 status 是 404,去 echo 的 issues 列表看了下,没有很直接相关的主题,还是先定位下是不是我自己程序的 bug 吧。

    对于服务分发调用,确实需要考虑更好地可靠性, 但暂时还不想引用过多的第三方工具(还达不到多大的量级),只能手工去加强这块的管理了, 至少可以先通过运维脚本监控重启解决。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具