Go net/http代理
时间:2020-05-26
本文章向大家介绍Go net/http代理,主要包括Go net/http代理使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
share/share.go
/****** ** @创建时间 : 2020/5/25 20:26 ** @作者 : SongZhiBin ******/ package share import ( "fmt" "net/http" "net/http/httputil" "net/url" "os" ) // ========= global variable var Config conf var LogOut *os.File // ========== Struct type conf struct { TargetIP string TargetPort int LocalPort int } // 转发中间件 func (c *conf) Forward(w http.ResponseWriter, r *http.Request) { u, _ := url.Parse(fmt.Sprintf("http://%s:%d/", Config.TargetIP, Config.TargetPort)) proxy := httputil.NewSingleHostReverseProxy(u) proxy.ServeHTTP(w, r) }
config.txt
[target] TargetIP = 127.0.0.1 TargetPort = 8080 LocalPort = 80
run.go
/****** ** @创建时间 : 2020/5/25 19:09 ** @作者 : SongZhiBin ******/ package main import ( "fmt" "gopkg.in/ini.v1" "net/http" "os" ) import "Songzhibin/HttpAgent/share" func main() { // 读取配置文件 share.LogOut = os.Stdout cfg, err := ini.Load("./config.txt") if err != nil { // 读取失败,使用默认配置 share.Config.TargetIP = "127.0.0.1" share.Config.TargetPort = 80 share.Config.LocalPort = 80 fmt.Fprintf(share.LogOut, "使用默认配置->TargetIP:%s TargetPort:%d\n", share.Config.TargetIP, share.Config.TargetPort) } err = cfg.Section("target").MapTo(&share.Config) if err != nil { fmt.Fprintf(share.LogOut, "MapTo映射失败->Err:%s\n", err) return } fmt.Fprintf(share.LogOut, "配置文件启动->TargetIP:%s TargetPort:%d\n", share.Config.TargetIP, share.Config.TargetPort) http.HandleFunc("/", share.Config.Forward) // 设置默认路由 err = http.ListenAndServe(fmt.Sprintf(":%d", share.Config.LocalPort), nil) if err != nil { fmt.Printf("http server failed, err:%v\n", err) return } }
原文地址:https://www.cnblogs.com/binHome/p/12965164.html
- tomcat源码编译和环境搭建(r5笔记第83天)
- NumPy 将停止支持 Python 2,这里有一份给数据科学家的 Python 3 使用指导
- Apache solr(一).
- dataguard中MRP无法启动的问题分析和解决(r5笔记第82天)
- Apache solr(二).
- Git 使用技巧
- 4.训练模型之准备训练数据
- 关于dg broker的简单配置(r5笔记第99天)
- 三天速成 TensorFlow课件分享
- 干货 | 机器学习算法线上部署方法
- 用于快速开发 3D 数据处理软件的开源数据处理库 —— Open3D | Github 项目推荐
- 【java网络】IO编程
- 一周 Github Trending 热门项目,最全中华古诗词数据库 | Github 项目推荐
- 【线程池】线程池与工作队列
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法