HTTP隧道

从v0.1.5开始,TeaWeb提供一个HTTP隧道的功能,使用于将局域网内的Web服务暴露给公网。

原理

  1. 1.Public User <--> | 2.TeaWeb Proxy | <--> | 3.HTTP Tunnel Server | <--> | 4.HTTP Tunnel Client | <--> | 5.Local Web|

整个流程说明如下:

  • 公网用户访问TeaWeb代理服务
  • TeaWeb代理服务将用户请求转发到HTTP隧道服务器端
  • HTTP隧道服务器端再将请求转发到HTTP隧道客户端
  • HTTP隧道客户端负责将需求转发到本地的Web服务
  • 待本地的Web服务有响应的时候,HTTP隧道再往上返回响应数据,最终发送给公网用户

使用HTTP隧道

要使用HTTP隧道需要四个步骤:

  • 配置代理服务
  • 在代理服务中启用HTTP隧道
  • 部署HTTP隧道客户端
  • 测试代理服务

配置代理服务

在TeaWeb中添加一个代理服务,此代理服务用户接收用户的访问,此代理服务通常可以通过公网来访问。

如果你以前没有添加过代理服务,可以参考添加代理文档。

在代理服务中启用HTTP隧道

在已添加的代理服务中”HTTP隧道”菜单中可以启用HTTP隧道:tunnel1.png

点击”启用”:tunnel2.png

其中:

  • 服务器终端地址:HTTP隧道服务器端地址,此地址中的IP和TeaWeb一致,因为是TeaWeb来启动的。需要设置防火墙确保此地址能被客户端所能连接。客户端会连接此终端地址,将本地的HTTP请求结果发送回代理服务;
  • 是否启用:是否启用此HTTP隧道。填好后,保存并按照提示重启即可。如果出现错误,会在界面上显示。

注意:在启用HTTP隧道后,所有的后端服务器将失效,因为此时所有的请求都会转发到HTTP隧道中。

部署HTTP隧道客户端

http://teaos.cn/download#tunnel 下载对应系统的HTTP隧道客户端,并解压。

解压后的目录为:

  1. bin/ # 命令相关文件
  2. configs/ # 配置相关文件
  3. logs/ # 日志相关文件
  4. start.bat # Windows系统专有

配置HTTP隧道客户端

访问本地的Web Server

如果要想通过隧道访问本地的Web Server,必须要配置local选项。

用编辑器打开configs/config.yml

  1. tunnels:
  2. - remote: "8.8.8.8:9001"
  3. local: "http://127.0.0.1"
  4. host: ""
  5. secret: ""

修改其中的:

  • remote - 客户端可以访问到的HTTP终端地址,通常是IP+端口
  • local - 本地Web服务的访问地址
  • host - 本地Web服务的域名,如果为空,表示使用用户实际访问的域名
  • secret - 客户端连接密钥,在v0.1.6中加入,需要先在TeaWeb中设置这个密钥注意:Windows下用记事本打开会有换行符的问题,所以建议用别的编辑器打开。

访问本地的静态文件

从v0.1.6开始,TeaWeb提供了两个选项rootindex,用来帮助用户通过隧道访问本地的静态资源:

  1. tunnels:
  2. - remote: "8.8.8.8:9001"
  3. root: "D:\\web"
  4. index: [ "index.html" ]
  5. host: ""
  6. secret: ""

修改其中的:

  • remote - 客户端可以访问到的HTTP终端地址,通常是IP+端口
  • root - 本地静态资源所在目录
  • index - 访问目录时默认查找的首页文件
  • host - 本地Web服务的域名,如果为空,表示使用用户实际访问的域名
  • secret - 客户端连接密钥,需要先在TeaWeb中设置这个密钥

启动HTTP隧道客户端

在配置好客户端后,如果是在Windows上,可以双击start.bat直接运行,在别的系统可以使用:

  1. bin/teaweb-tunnel start

启动,如果想查看更多可以使用的命令可以通过:

  1. bin/teaweb-tunnel -h

来查看。

如果teaweb-tunnel在后台运行时,会在logs/run.log中存储运行日志,以便于我们调试问题。

测试代理服务

在配置并启动HTTP隧道客户端后,可以在HTTP隧道页查看当前状态:tunnel3.png

如果HTTP隧道客户端连接服务器端成功,会显示”当前客户端有x个连接”,如果是0个连接,请检查客户端连接错误。

如果一切正常之后,就可以通过浏览器访问代理服务了。