Skip to content

Reverse Proxy

利用反向代理隧道实现k8s中服务的本地调试

当前的容器,Kubernetes等云原生技术使我们的服务部署和管理更加灵活和便利,然而任何技术有利就会有弊,当一个应用运行在Kubernetes集群中时,如果需要对其进行调试则会很麻烦。

目前比较主流的解决方案是使用Telepresence等工具,将服务的流量拦截并转发到本地服务,从而实现本地环境下的开发和调试。下面我们将利用反向代理隧道来实现类似的功能。

GOST.PLUS-公共反向代理服务

反向代理隧道是GOST中新增的一个较大功能,同时也是一个很重要的功能,借助于反向代理和内网穿透,可以很方便的将内网Web服务暴露到公网,随时随地都能访问。

为了能够对此功能进行更全面的测试,同时也为了能够给需要临时暴露内网服务的用户提供一种快捷的方式,特公开推出GOST.PLUS公共反向代理测试服务。此服务面向所有用户开放,无需注册。

反向代理隧道实战

上一篇博文中,对反向代理和内网穿透做了基本的介绍。本篇将通过具体应用案例更加直观的展示反向代理隧道的使用。

反向代理隧道是将反向代理和内网穿透两个功能相结合一种技术手段,这两个概念之间其实没有必然的联系,反向代理可以不使用内网穿透,内网穿透也并不一定是为了实现反向代理,只不过很多情况下我们需要这两个功能组合在一起使用。例如一般的家庭网络或公司网络可能没有公网IP,因此无法通过公网直接访问,这个时候就需要用到内网穿透,通过一台具有公网IP的机器来间接的访问内网的服务。

反向代理与内网穿透

反向代理也是代理服务的一种,我们通常使用的代理服务,例如HTTP/SOCKS5代理,其代理的目标是客户端,代理服务代替客户端与所访问的服务器建立连接,而反向代理服务代理的目标是服务器,因此像HTTP/SOCKS5这种代理服务也被称作正向代理。二者的主要却别在于正向代理中客户端是知道代理服务的存在,而反向代理中客户端(甚至是服务端)是不知道代理服务的存在,在客户端看来代理服务就是我真正要访问的服务。

从某种角度来看,反向代理与端口转发是一样的,二者都是在两个端口之间建立映射关系,将数据从一个端口转发到另外一个端口,只不过反向代理会利用转发的数据进行更精确的控制,而端口转发一般不会依赖于数据的内容,仅仅是纯粹的端到端的转发行为。GOST中的反向代理就是基于端口转发来实现的。