在写hunshcn/qndxx的时候,项目部署在vercel,h5.cyol.com在海外解析到了103.42.78.169,但是vercel是无法访问这个ip的......所以需要手动给它制定一下目标ip。
如果是在python里,直接requests https://1.1.1.1,然后在header加上host就可以了。但是golang这样会出现证书错误。
在Golang里我们定义一个Transport
,然后修改请求的endpoint。
代码如下
dialer := &net.Dialer{
Timeout: 6 * time.Second,
KeepAlive: 3 * time.Second,
}
transport := http.Transport{
DialContext: func(ctx context.Context, network, addr string) (net.Conn, error) {
if addr == "h5.cyol.com:80" {
addr = "218.1.70.80:80"
}
return dialer.DialContext(ctx, network, addr)
}}
client = http.Client{Transport: &transport}
我们可以基于此进行类似于dns的操作,或者实现简单的负载均衡。
本文由 hunsh 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Mar 25, 2021 at 11:47 pm