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

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • golang 小白求大佬指教
未分類
19 7 月 2020

golang 小白求大佬指教

golang 小白求大佬指教

資深大佬 : chaodada 8

现在有一个需求 想拿到用户的请求(如 80 443 端口的 http 请求) 进行过滤 通过的就转发到本地的站点端口 不通过的就直接返回 404 或者重定向到其他的地址

但是不知道该怎么写 求大佬指点一下思路 或者应该了解那些知识点呢 这是我做的思维导图 golang 小白求大佬指教 。。。

大佬有話說 (15)

  • 資深大佬 : yuikns

    你这个需求不明确
    golang 自带 http server 库,也可以用 gin 等。如果是做个 client 转发,如果不是自定义 404/301 。
    问题在哪?

  • 資深大佬 : sirgod

    你用 go 写过 http 服务吗?

  • 主 資深大佬 : chaodada

    @sirgod #2 之前做过,但是用 nginx 转发到 golang 这个,我是想让请求都经过 golang 进行处理,然后转发到 nginx 或者其他服务

  • 資深大佬 : yrj

    你提问的就是流程(思路)。如果你还不知道,那应该从基础学一下

  • 資深大佬 : wangritian

    需求拆开看,分 3 个部分,http 服务器,http 请求,过滤器,你说的拿到 80 443 端口的请求,其实就是个 http 服务器,拿到参数后走个过滤程序,通过后,uri 和参数不变,向业务服务器发请求,把结果返回给用户

  • 資深大佬 : yuikns

    https://medium.com/@mlowicki/http-s-proxy-in-golang-in-less-than-100-lines-of-code-6a51c2f2c38c

    参考这个。
    你可以在 http.HandlerFunc 对 *http.Request 加个过滤。
    不过强烈建议稍微了解下基础概念

  • 資深大佬 : yuikns

    另外,直接 golang 处理 https 可能不是一个很好的主意(当然这是可行的),因为这个证书管理可能会遇到点麻烦。你可以用 nginx 或者各种 slb 等代理一层,go 需要过滤处理 http 完事

  • 資深大佬 : reus

    会也不教你

  • 資深大佬 : brader

    你这个需求,更像做一个代理服务器,思路很简单,你先用 go 做成功一个代理功能,第一步什么也不要想,别去想什么过滤功能,你只要实现代理就好了,就想左手拿到数据,交给右手这样简单。
    实现了第一步代理功能,第二步,就是 go 解析客户端的请求内容,做特征识别过滤,到这里你的需求就完成了。

  • 主 資深大佬 : chaodada

    @brader #9 @brader #9 号

  • 資深大佬 : eudore

    没啥难点 大概写下伪代码 题主自己调试下
    func main() {
    // 配置下反向代理地址
    proxyer := httputil.NewSingleHostReverseProxy(….)
    // demo 监听一个地址
    http.ServeAndListen(“:8080”, http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request){
    // 在此过滤逻辑
    if req.Path == “/” {
    rw.WriteHeader(404)
    return
    }
    // 反向代理转发
    proxyer.ServeHTTP(rw,req)
    }))
    }

  • 資深大佬 : wangyzj

    过滤条件复杂就用 go 自带的 http server 处理
    不负责 nginx 就行了

  • 資深大佬 : sirgod

    @chaodada 既然写过,那这个需求并不比通常的 http 服务更复杂,只不过监听了两个端口,443 端口需要指定证书和 key 的文件路径,不知道你的困难点在哪?是不知道怎么监听两个端口还是不知道怎么做反向代理还是别的?

  • 主 資深大佬 : chaodada

    @eudore 谢谢大佬,参考您的代码 我已经可以做简单的反带了,接下来我要开始慢慢搞规则了 哈哈哈哈谢谢

  • 主 資深大佬 : chaodada

    谢谢大家

文章導覽

上一篇文章
下一篇文章

AD

其他操作

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

51la

4563博客

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