标签 ngrok 下的文章

[分享] Alpine 真是个好东西

把 VPS 上的 Ngrok 用 Alpine 重新打包了一下, 体积小了很多

root@vultr:/opt/ngrok# docker images 
REPOSITORY          TAG             IMAGE ID        CREATED          SIZE
ngrokd.alpine       latest          d891322d86e4    2 minutes ago    14.03 MB
alpine              3.5             4a415e366388    11 days ago      3.987 MB
root@vultr:/opt/ngrok# du -sh ./bin/ngrokd
9.6M    ./bin/ngrokd
root@vultr:/opt/ngrok# ldd bin/ngrokd
    not a dynamic executable

因为依赖库的问题, ngrok 编译的时候需要增加 CGO_ENABLED=0 来指定静态编译, 所以生成的可执行文件会比较大.

例如: root@vultr:/opt/ngrok# CGO_ENABLED=0 make release-server.

感觉可以把其它东西也都挪到 docker 了

[分享] 使用 Ngrok 实现内网穿透

Ngrok 是什么

ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放。

网络架构如下图所示:

24201429_lLUH.jpg

介绍和图片来自: http://www.oschina.net/p/ngrok

可以用来干什么

其中应用场景最多的是内网穿透, 把局域网内的一些服务暴露到公网.
例如支付对接的异步通知, 微信开发者模式测试等.

- 阅读剩余部分 -

[原创]搭建自己的 Ngrok 服务器, 并与 Nginx 并存

Ngrok 是一个内网穿透工具, 用来将内网的一些服务器暴露到公网上, 目前支持 HTTP 和 TCP 端口转发.

Ngrok 官方提供的服务器因为一些原因导致可用率不高, 但是他们开源了 1.x 版本的服务器端代码(目前最新是 1.7), 这样就可以自己搭建了.

Ngrok Server 端部署

这个比较简单, 参考官方的文件就可以, 步骤无非就是: 拿到代码, 安装 go, 进行编译.

文档地址: https://github.com/inconshreveable/ngrok/blob/master/docs/DEVELOPMENT.md

编译完成后, 执行 ngrokd -h, 输出如下:

Usage of bin/ngrokd:
  -domain="ngrok.com": Domain where the tunnels are hosted
  -httpAddr=":80": Public address for HTTP connections, empty string to disable
  -httpsAddr=":443": Public address listening for HTTPS connections, emptry string to disable
  -log="stdout": Write log messages to this file. 'stdout' and 'none' have special meanings
  -log-level="DEBUG": The level of messages to log. One of: DEBUG, INFO, WARNING, ERROR
  -tlsCrt="": Path to a TLS certificate file
  -tlsKey="": Path to a TLS key file
  -tunnelAddr=":4443": Public address listening for ngrok client

参数比较简单, 指定域名, http 端口, 日志, ssl 证书, 隧道端口.
这里有个问题就是, 80, 443 已经让给 nginx 使用了, 虽然 ngrok 能指定到其它端口, 但是在客户端连接后:

QQ20150903-2@2x.png

一个是 https 识别错误, 一个是访问的时候加端口麻烦, 就算用 nginx 再次代理, 但是客户端显示的端口是没有变化的.

- 阅读剩余部分 -