使用websocket代理所有tcp流量
目录
有时候我们的服务只能暴露80/443接口提供http服务,但是我们可能又需要访问服务器中的其他服务,比如mysql、consul这些,那么我们怎么样才能做仅开放http/https的端口下还能访问服务器上其他端口的服务呢?
我们可以使用websocket来代理tcp端口,这样就可以访问一切基于tcp协议的流量了,于是我就写了一个基于go的流量代理器。
github
https://github.com/MikeLINGxZ/http2tcp
下载地址
https://github.com/MikeLINGxZ/http2tcp/releases
使用方法
1.1 在已有go项目中使用
获取依赖
go get github.com/MikeLINGxZ/http2tcp
在http路由中加入handler方法
package main
import (
"github.com/MikeLINGxZ/http2tcp"
"net/http"
)
func main() {
http.HandleFunc("/path",http2tcp.ProxyForHttpHandler)
http.ListenAndServe(":8080", nil)
}
客户端使用参考 1.3
1.2 独立使用
$~/->ls
server.yml http2tcp_server
编辑服务端配置vim server.yml
Host: 0.0.0.0 // 监听的地址
Port: 7889 // 监听的端口
Path: /proxy // http路径
Auth: 123456 // 密码
运行服务端
./http2tcp_server
客户端使用参考 1.3
1.3 客户端
$~/->ls
client.yml http2tcp_client
编辑客户端配置文件vim client.yml
WebsocketServer: ws://14.21.123.12:7889/proxy // ws服务地址
Auth: 123456 // 密码
Targets: // 代理配置
- LocalHost: 127.0.0.1 // 本地监听地址
LocalPort: 13306 // 本地监听端口
RemoteHost: 17.21.23.115 // 远程地址(服务器可访问的地址)
RemotePort: 3306 // 远程端口
运行客户端
./http2tcp_client