首页 > 其他分享 >go做反向代理

go做反向代理

时间:2022-11-13 23:13:29浏览次数:42  
标签:http 代理 Write 反向 func go main os

后端服务器代码

package main
import (
    "log"
    "net/http"
    "os"
    "os/signal"
)
type webHandler struct {

}
func (webHandler) ServeHTTP (w http.ResponseWriter, request *http.Request ){
    w.Write([]byte("this is web1"))
}
func main(){
    c:=make(chan os.Signal)//信号
    go func() {
        http.ListenAndServe(":9091",webHandler{})
    }()
    signal.Notify(c,os.Interrupt)
    s:=<-c
    log.Println(s)
}

前端代码

package main

import (
    "io/ioutil"
    "log"
    "net/http"
)

type ProxyHandle struct {

}

func (p ProxyHandle) ServeHTTP(w http.ResponseWriter,r *http.Request){
    defer func(){
        if err:= recover();err != nil {
            w.WriteHeader(500)
            log.Println(err)
        }
    }()
    if r.URL.Path == "/a" {
        newreq,_:=http.NewRequest(r.Method,"http://localhost:9091",r.Body)
        req,_:=http.DefaultClient.Do(newreq)
        defer req.Body.Close()
        ss,_:=ioutil.ReadAll(req.Body)
        w.Write(ss)
        return
    }

    w.Write([]byte("<h1>defualt index</h1>"))
}
func main(){
    http.ListenAndServe(":8080",&ProxyHandle{})
}

 

标签:http,代理,Write,反向,func,go,main,os
From: https://www.cnblogs.com/zh718594493/p/16887616.html

相关文章

  • Mycat代理
    Mycat代理笔记Mycat简介什么是mycatmycat是Java语言开发的目前比较主流的数据库中间件之一,是mycat团队在阿里开源的Cobar产品基础上而研发的,也一直在维护。my......
  • [转]go语言io reader_如何从io.Reader 中读数据
     原文:https://blog.csdn.net/weixin_39605905/article/details/111631303------------------------女主宣言Go语言以其本身具有的高并发特性,在云计算开发中,得到了广泛......
  • go 并发
    Go语言基础之并发发布于2017/06/25,更新于2022/04/0623:54:51 | Golang |总阅读量:18627次并发编程在当前软件领域是一个非常重要的概念,随着CPU等硬件的发展,我们......
  • 部署argo-rollouts
    https://github.com/argoproj/argo-rollouts/releaseskubectlcreatenamespaceargo-rolloutskubectlapply-nargo-rollouts-fhttps://github.com/argoproj/argo-ro......
  • golang fmt && lint
    如何轻松使用格式化和静态检查工具makefmtmakelint 1、go.mod同级目录创建文件Makefilefmt:command-vgofumpt||(WORK=$(shellpwd)&&cd/tmp&&......
  • golang内存对齐的重要性
     结构体中字段类型的改变直接造成内存对齐结果的改变,是的占用内存空间也不一样packagemainimport( "fmt" "unsafe")funcmain(){ varxxstruct{ aboo......
  • SAP Hybris Category 显示在 Storefront 的判定条件
    默认情况下,只有标记为active的目录版本(catalogversion)在前端才可见。CategoryVisibility每个类别(Category)都有一个属性,用于指定允许查看和浏览该类别的用户或用户......
  • Goravel 让微服务间通讯如此简单,省出来的时间想干点啥干点啥吧
    Goravel升级v1.4,使微服务间请求更加简单一体化。Nobb,showthecode.Goravel是一个功能完备、具有良好扩展能力的GolangWeb应用程序框架。风格与Laravel保持一......
  • Go map 竟然也会发生内存泄露?
    Go程序运行时,有些场景下会导致进程进入某个“高点”,然后就再也下不来了。比如,多年前曹大写过的一篇文章讲过,在做活动时线上涌入的大流量把goroutine数抬升了不少,流量恢......
  • Gerrit 不使用代理服务的搭建配置
    1、前言Gerrit名声已很大了,我也就不在过多阐述介绍了,凡是需要安装搭建Gerrit服务器的,网上一搜索都是大把精彩教程。但是,基本都是基于代理服务的搭建安装,一种是基于apach......