分享一个内网反向代理工具,或许比 ngrok 更符合你的需要

2020-04-14 11:00:30 +08:00
 ysmood

项目地址 https://github.com/ysmood/digto

和普通的代理工具不同它不需要任何依赖,只要能发送 http 请求就可以在内网处理公网发来的 http 请求。协议非常简单所以可以轻松集成到任何语言而不需要引用依赖。比如调试支付服务的回调时,他们的回调请求来自公网,而我自己的开发服务是在局域网内,利用它就可以将外部请求代理到本地开发服务。相比 ngrok 之类的服务利用这个工具就可以不用常驻一个反代进程了,常驻反代也让有洁癖的人很难受,要是忘了关 ngrok,同一个端口被别的服务用了还可能泄露内部的讯息。

由于可以方便的编程,它也比 ngrok 之类的服务更容易集成到自动化测试中。事实上这也是我们自己用的最多的方式。由于可以用我们自己熟悉的工具 log debug 打断点,有时候反而比那些那些代理工具花里胡哨的功能更便利,当然这个是仁者见仁智者见智。

下面是一个简单的 curl 示例,这里只需要用到 curl 。

  1. 打开一个命令行,发送公网请求 curl https://my-subdomain.digto.org/path -d 'ping' ,可以看到请求开始等待返回,my-subdomain 可以为任意值

  2. 打开另一个命令行,用它发送返回值给上面这个公网请求,我们要发送两个请求,第一个用来获取 http header,第二个用来发送 response 。示例如下:

    curl -i https://digto.org/my-subdomain
    # HTTP/2 200
    # digto-method: GET
    # digto-url: /path
    # digto-id: 3dd4e560
    #
    # ping
    
    # digto-id 的值必须和上面返回的值保持一致
    curl https://digto.org/my-subdomain -H 'digto-id: 3dd4e560' -d 'pong'
    

    然后应该能看到第一个命令行收到了 pong 的返回。

目前 digto 自己实现了 golang,ruby 和 nodejs 的 client 供做示例。

如果你不想使用 demo 服务,也可使用源代码启动自己的私服。

2641 次点击
所在节点    分享创造
3 条回复
ifyour
2020-04-14 14:56:51 +08:00
赞。👍

文档也比较详细,star 支持!
win7pro
2020-04-15 16:12:09 +08:00
有意思!
BlackHole1
2020-04-15 17:00:46 +08:00
不错哎,已 star

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/662214

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX