美文网首页网络
golang简单http反向代理

golang简单http反向代理

作者: 写个代码容易么 | 来源:发表于2020-07-04 17:43 被阅读0次

类似nginx的反向代理,将8081端口请求代理到后端服务8001 8002 和 8003
轮训方式,无负载均衡服务发现等

package main

import (
    "fmt"
    "log"
    "net/http"
    "net/http/httputil"
    "net/url"
    "sync/atomic"
)

var backendServiceCount = 3

/**
后端服务组
*/
var backendServiceList = make([]*httputil.ReverseProxy, backendServiceCount)

var index int64 = 0

func init() {
    for i := 0; i < backendServiceCount; i++ {
        url, _ := url.Parse(fmt.Sprintf("http://127.0.0.1:%d", (8001 + i)))
        log.Println("初始化后端服务", url)
        proxy := httputil.NewSingleHostReverseProxy(url)
        backendServiceList[i] = proxy
    }
}

/**
反向代理给后端服务
*/
func rproxy(w http.ResponseWriter, r *http.Request) {
    //轮训方式选择一个后端服务
    i := atomic.AddInt64(&index, 1)
    proxy := backendServiceList[i%int64(backendServiceCount)]
    proxy.ServeHTTP(w, r)
}

/**
反向代理
将8081端口请求代理到后端服务8001 8002 和 8003
*/
func main() {
    http.HandleFunc("/", rproxy)
    log.Fatal(http.ListenAndServe(":8000", nil))
}

相关文章

  • golang简单http反向代理

    类似nginx的反向代理,将8081端口请求代理到后端服务8001 8002 和 8003轮训方式,无负载均衡服务发现等

  • golang实现的http反向代理

    今天找http代理的例子,一直没找到满意的,终于在github上找到一个,非常的精简,非常的入眼,记录一下。 出处...

  • nginx 代理https到http重定向失败的问题

    nginx 可以代理https到http,外网用https,内网使用http,这样的反向代理模式,安全简单。但是存...

  • Nginx配置反向代理

    Nginx 的其中一个用途是做 HTTP 反向代理,下面简单介绍 Nginx 作为反向代理服务器的方法。 场景描述...

  • Traefik和Nginx-Ingress-Controller

    前言 Traefik Traefik是一个用Golang开发的轻量级的Http反向代理和负载均衡器。由于可以自动配...

  • (转载)nginx反向代理TCP,取RTMP流

    nginx反向代理TCP,取RTMP流 一、说明nginx默认只支持HTTP反向代理,如果需要支持TCP反向代理需...

  • Ingress controller之trarfik2介绍

    Traefik,它是一个用Golang开发的轻量级的Http反向代理和负载均衡器,虽然相比于Nginx,它是后起之...

  • Nginx常用功能介绍

    Nginx常用功能1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。正向代理和反向代理...

  • Nginx常用功能

    1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。 Nginx在做反向代理时,提供性能...

  • golang简单tcp代理

    使用golang网络编程实现一个简单的TCP代理(不支持HTTP) 使用方式 代理监听9000端口,代理后端服务的...

网友评论

    本文标题:golang简单http反向代理

    本文链接:https://www.haomeiwen.com/subject/peauqktx.html