工作小总结

ngrok+nginx 实现内网穿透 共用80端口

内网穿透能干嘛:穿透后,你的机器指定端口就直接暴露在外网上,3389,vnc,web服务等等任何服务都可以支持。微信开发需要回调web服务器接口,如果开发机器在内网,就无法调试。原理外网服务器A,内网服务器B,通过某种协议连接,将域名解析到A,A将所有用户请求数据转发到B的指定端口,B返回的数据通过A转给用户,等于在B和用户之间加了代理A解决方案内网穿透有现成的商业解决方案,比如说花生壳,但是免费

内网穿透能干嘛:

穿透后,你的机器指定端口就直接暴露在外网上,3389,vnc,web服务等等任何服务都可以支持。微信开发需要回调web服务器接口,如果开发机器在内网,就无法调试。

原理

外网服务器A,内网服务器B,通过某种协议连接,将域名解析到A,A将所有用户请求数据转发到B的指定端口,B返回的数据通过A转给用户,等于在B和用户之间加了代理A

解决方案

内网穿透有现成的商业解决方案,比如说花生壳,但是免费用户只给1g每月的流量,还要花几块钱认证。
网上也有免费的ngrok服务,直接下载对方提供的客户端就可以,但免费的总是不稳定,也有一些限制,需要的同学可以自己搜。

今天我们讨论的是在自己的VPS上架设ngrok服务,访问内网的web服务,场景是这台vps上同时开了着web服务(nginx),所以不能直接将80端口作为ngrok的转发端口, ngrok配置成功后,需要在nginx上作一次转发,才能使用80端口。

机器是centos 6.7。

1、安装最新版git

当前yum安装的git是1.7.1,这个版本太老,编译ngrok时会有问题,需要下载源码编译安装。

源码:https://github.com/git/git

安装方法:

$ tar -zxf git-xxx.tar.gz
$ cd git-xxx
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install
2、安装编译依赖
yum install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++ golang
3、域名解析

ngrok的客户端在连接时可以自己指定子域名前缀,所以需要将域名泛解析到外网服务器。
假设子域名形式为 aaa.dev.pocketdigi.com,需要在DNS设置中添加 dev.pocketdigi.com A记录到外网服务器,*.dev.pocketdigi.com cname到 dev.pocketdigi.com

4、安装ngrok

生成的服务端在ngrok/bin/ngrokd

git clone https://github.com/inconshreveable/ngrok.gitcd ngrok

NGROK_DOMAIN="dev.pocketdigi.com"openssl genrsa -out base.key 2048openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem
openssl genrsa -out server.key 2048openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA base.pe

原创不易,完成人机校验,阅读全文

相关推荐