type
status
date
slug
summary
tags
category
icon
password
Property
Aug 11, 2024 10:09 PM
简单记录一下我实现的过程和遇到的一些问题
加载配置文件
配置文件内容:
./config.json
将文件内容加载,放入
data
,并且存放在ProxyTarget
这个map[string]string
中使用到了
json.Unmarsha
l函数,函数签名如下- 参数列表:包含两个参数
- 第一个参数是一个字节切片
data
,表示包含 JSON 数据的字节切片。 - 第二个参数是一个空接口类型
interface{}
,表示目标数据结构的指针,即指向将被填充的数据结构。
- 返回值:一个
error
类型,表示解析过程中可能出现的错误,如果解析成功则返回nil
。
- 这个函数的作用是将 JSON 格式的数据解析为 Go 语言中的数据结构,并将解析结果存储到目标数据结构中
获取代理目标URL
从
http.Request
中拿到请求的网址,并作为key从map中获取对应的value,使用url.Parse()
将网址转换成*url.URL
,返回处理请求
由之前的部分拿到了代理目标的
*url.URL
后,使用httputil.NewSingleHostReverseProxy()
创建一个反向代理,再使用ServeHTTP()
将传入的第二个参数 HTTP 请求转发到目标服务器。注意需要将target的host一并传过去,否则会造成403forbidden
main
main()
中要注意对错误的检查,并实现对端口的监听参考
- 作者:GJJ
- 链接:https://blog.gaojj.cn/article/blog-93
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。