ngrok实战踩坑

版权声明:本文为博主原创文章,未经博主允许可以转载,但请注明出处。 https://blog.csdn.net/windanchaos/article/details/78920686

使用ngrok的场景:内网服务发布到外网,服务的内网穿透。
具体如何操作的网上很多文章,这里就不赘述。
可以参考:
一分钟实现内网穿透(ngrok服务器搭建)
自搭Ngrok实现树莓派内网穿透

整个流程

  1. 编译ngrok。会拿到的服务端和客户端。
  2. 将服务器端部署到一台拥有外网固定IP地址的服务器。域名映射到这台服务器。
  3. 将客户端部署到内网发布服务的服务器,启动,将客户端启动注册到ngrok的服务端。
  4. 其他。
    a、内网如果直接访问,则配置内网的DNS解析到内网服务器。
    b、如果不同的服务器使用了不同的端口,但需要直接输入域名访问的情况,可以在内网部署的服务器上再加一个nginx,监控80端口,转发到指定的服务端口。
    c、ngrok没有自带服务发现,所以服务端要是重启了,所有链接的客户端都要重新链接一次。

有坑的地方

编译安装的文件是哪些

首先找到安装的目录,我的是/usr/local/src/ngrok/
那么编译完的可执行文件就在/usr/local/src/ngrok/bin

证书在:
/usr/local/src/ngrok/assets/server/tls
/usr/local/src/ngrok/assets/client/tls
可执行文件+证书,拷贝到一起,就是一套完成的客户端和服务端了。

后台运行

ngrok 用 & 不能后台运行
这就要使用screen这个命令
首先安装screen
apt-get install screen
之后运行
screen -S 任意名字(例如:keepngork)
然后运行ngrok启动命令
最后按快捷键
ctrl+A+D
既可以保持ngrok后台运行
http://wdxtub.com/2016/04/16/thin-csapp-1/

ngrok客户端无法注册到服务端

服务端可以查看到客户端的链接日志,但是auth提示有问题,是因为在编译的时候带了认证则客户端机器,客户端执行文件同级目录,把生成的几个认证文件拷贝过去即可。

  • ngrok
  • ngrok.cfg(客户端配置)
  • ngrokroot.crt
  • snakeoilca.crtt

域名关系处理

ngrok的服务端,启动带的域名如果为

SCREEN -S keepngrok
./ngrokd -domain=domain.com.cn

域名映射到外网固定IP的配置就为:

@.domain.com.cn

就是说只要没有特别说明,所有可能的domain.com.cn都访问这台服务器。

那么,客户端的访问地址就:abc.domain.com.c
某客户端的配置:

server_addr: "domain.com.cn:4443"
trust_host_root_certs: false
tunnels:
  http:
    subdomain: "abc"
    proto:
      http: "9003"

猜你喜欢

转载自blog.csdn.net/windanchaos/article/details/78920686