微信公众号、支付宝支付等开发要求有公网(外网)服务器。每次调试时,上传代码到服务器很不方便。ngrok很好的解决了这一问题。网上的文章大多是讲怎么在Linux下搭建ngrok服务器。其实依靠云计算的强大计算能力,可以实现快速编译制作windows操作系统下服务器端程序,也可以实现linux操作系统下的服务器端程序。目前测试支持 Windows XP/ Windows 7 (win7)/Windows Server 2008/Windows Server 2012,各类Windows 32位,64位操作系统。同时支持Linux系列服务器,Ubuntu Linux/Red Hat Linux/CentOS,Linux 32位,Linux 64位,Linux arm系列。访问网址http://www.hongzaosoft.cn/downloadngrok.html 即可制作下载 windows、Linux版本、Mac OS下的ngrok服务端和客户端。

生成好的程序是绿色免安装版,直接拷贝就可以用,连脚本都配置好了。

注意:使用ngrok必须使用安全证书,否则其他人使用端口扫描工具,扫到你的ngrok端口,可以直接连接到你的服务器。ngrok使用证书验证来保障通讯安全,某些二次开发的版本去掉了这一功能,在安全上有很大缺陷。而http://www.hongzaosoft.cn/downloadngrok.html 运用云计算的强大力量,快速为您生成用您的域名定制的证书,充分保障您服务器的安全。ngrok使用RSA非对称加密算法加密数据,数字证书签名,请不要使用去掉证书验证的版本。

生成的ngrok程序可选用户管理功能,在安全证书的基础上,连接时需要验证用户名和密码。针对Http隧道可分配子域名给用户,防止用户越权使用子域名;针对Tcp隧道可指定用户可以使用的端口号,防止用户越权使用端口。此功能对分享给多个好友,或者有偿给其他人使用时非常方便,在服务器端做用户权限验证,把您服务器的带宽充分利用起来。

一、搭建前准备条件:

1.如果是做tcp内网穿透,只需要公网ip,或者域名,域名可以不备案,但必须确保被解析到你的服务器公网ip上。

如果是做http穿透,必须要有域名,并且通常你的服务器提供商会要求域名备过案。

通常我们用自己的域名例如hongzaosoft.cn来给ngrok服务端用,如果被占用,也可以准备个二级域名比如ngrok.hongzaosoft.cn来专门给ngrok用,这个域名在后面编译服务器端会用到,配置文件里也必须与这个域名一致,否则连不上;此域名一旦生成,配置文件中不可更改。

2.防火墙准备:请开放以下端口:

4443:ngrok服务端默认用到的端口,此端口可以在配置文件中更换。

80:ngrok服务端http协议用到的端口,此端口可以在配置文件中更换。

还有您指定的remote远程服务器端口,例如将服务器的tcp端口25565转发到本地内网25565端口,则远程服务器必须开放25565端口,本地客户机开放25565端口。

怎么开放防火墙端口,以我的centos为例

#开放 8080 端

iptables -I INPUT 4 -p tcp  -m state --state NEW -m tcp --dport 8080 -j ACCEPT

service iptables save

客户端也要放开对应的端口,一般客户端安全性要求不高,调试时可以直接关掉防火墙

windows开放防火墙有图形化界面,不赘述。

二、编译服务器端、客户端软件

自己编译需下载安装Git、Go环境、编译ngrok、为域名生成证书。

比较复杂,要了解的东西比较多,这里可以借助红枣软件提供的生成服务器端、客户端软件的功能,避免繁杂的工作。自己弄下来得大半天功夫,一个程序员一天都值几百大洋,不如直接通过红枣软件提供的服务生成来的好。

图形化界面,通俗易懂;编译好软件的同时,生成服务端和客户端启动脚本。

服务器端配置:

如果您没有域名,或者不想用域名,也可以填您的公网ip

如果您打算将ngrok分享给好友用,或者有偿提供给其他人用,推荐勾选用户管理功能,

1.选择“支持用户管理、授权可用子域名”,则您的服务端支持添加用户,并给用户授权可用子域名(单个或多个),之后客户端连接时,必须验证用户名和密码,使用http隧道时,子域名必须在授权的里面;如果没有勾选2选项,则tcp隧道端口可以自由选择;

2.在选择1的基础上,可选择“支持授权用户端口号”,则您的服务端支持给用户授权可用tcp外网端口号(单个或多个),之后客户端连接使用tcp隧道,使用的外网端口号必须在授权的端口号列表内。

3.选择您需要管理的用户规模。

客户端配置:

这里配置一个http转发示例:讲内网tomcat的8080端口使用wx.hongzaosoft.cn这个域名来访问

那么访问http://wx.hongzaosoft.cn就可以访问到http://127.0.0.1:8080的效果。

再配置一个tcp转发示例:

比如转发我的世界游戏用的25565端口到ngrok服务器的25565端口,则可如下配置

点提交后,会跳转到ngrok下载页面。

下载得到的文件如下:

服务端的启动脚本《启动ngrok服务端.bat》内容如下:

ngrokd -tlsKey="server.key" -tlsCrt="server.crt" -domain=hongzaosoft.cn -tunnelAddr=":4443" -httpAddr=":80"

其中-tunnelAddr指定ngrok服务器使用的端口

-httpAddr HTTP连接端口号,空字符串禁用 (default ":80")

客户端与http隧道相关的两个配置文件《ngrok.cfg》、《启动子域名wx.bat》

《ngrok.cfg》关键内容

server_addr: "hongzaosoft.cn:4443"(配置的服务器地址)
trust_host_root_certs: false

与tcp隧道相关的两个配置文件《ngrok_tcp_25565.cfg》《启动端口25565.bat》

如果带用户管理和支持分配用户端口号,下载得到的文件如下:

服务端多了用户管理、子域名授权;端口管理的两个脚本。服务端的启动脚本《启动ngrok服务端.bat》内容如下:

ngrokd -tlsKey="server.key" -tlsCrt="server.crt" -domain=hongzaosoft.cn -tunnelAddr=":4443" -httpAddr=":80" -pass="serverpassword"

多了个-pass,指定的是ngrok服务端的管理密码,后面添加用户时要用到。

客户端与http隧道相关的两个配置文件《ngrok.cfg》、《启动子域名wx.bat》

《ngrok.cfg》关键内容

server_addr: "hongzaosoft.cn:4443"
trust_host_root_certs: false 
inspect_addr: disabled
auth_token: username #这里填的是后面在服务端添加的ngrok用户名
password: "userpassword" #这里填的是后面在服务端添加的ngrok用户密码,注意引号不能少

《ngrok_tcp_25565.cfg》同样也比普通版的需要多配置 用户名和密码

生成的文件全部是绿色免安装,拷过去就可以用了。windows下双击bat文件,Linux下执行sh的shell脚本就可以了。

当然,也可以通过淘宝https://item.taobao.com/item.htm?id=550860319208来获取ngrok程序

三、服务器、客户端启动方法

以windows为例, 服务端目录结构如下:

.crt和.key文件就是数字证书,hongzaosoft文件是个加密文件,都是用来保障安全的,请认准有证书验证的ngrok。

双击运行《启动ngrok服务端.bat》这个bat文件,启动后界面

如果您生成时选择了支持用户管理功能,会多两个脚本《adduser(添加用户_设置用户密码_授权可使用的子域名).bat》《addTcpPort(将端口授权给某个用户).bat》

首先增加一个用户,这里以用户名username,密码userpassword,授权子域名 wx 为例,双击运行《adduser(添加用户_设置用户密码_授权可使用的子域名).bat》

注意:前面自动生成的cfg配置文件中,默认填的是用户名username,密码userpassword,这里为了把程序调通,请先增加这么一个用户。

1.    请输入您的ngrok管理密码,此密码为启动ngrokd服务端时指定的-pass参数值,初始密码为serverpassword

修改这个密码请在《启动ngrok服务端.bat》中更改-pass指定的参数,重启ngrok服务端生效。

2.    请输入您要添加的ngrok用户名(后面客户端的*.cfg文件中auth_token参数填的就是这里添加的用户名)

3.    请输入您要添加的ngrok用户密码(后面客户端的*.cfg文件中password参数填的就是这里添加的密码)

4.    请输入您要允许该ngrok用户使用的子域名,每个子域名需用双引号,单个子域名例如\"wx\"  多个子域名之间以逗号分隔,例如 \"blog\",\"shop\"
    这里要注意,子域名前后必须加 \"
5.    成功后的状态为{'code': 'ok'},并且在C:\ngrokconfig\ng\ro目录中看到ngrok_添加的用户名 这个文件,否则请检查输入的参数
6.    至此在服务端已经添加了 用户名为username,密码为userpassword,授权子域名 wx.hongzaosoft.cn的 用户,此用户使用http隧道时将只能使用wx.hongzaosoft.cn这个子域名
接下来启动客户端。客户端目录结构如下:
.crt和.key文件就是数字证书,请认准有证书验证的ngrok。

如果要启动wx这个子域名的http内网穿透,双击《启动子域名wx.bat》就可以了,显示online的成功界面如下:

要启动tcp隧道转发25565端口,

如果您生成时选择了“支持授权用户端口号”,则需在服务器端做授权操作,服务端双击运行《addTcpPort(将端口授权给某个用户).bat》

双击运行《启动端口25565.bat》这个bat文件,就可以映射25565端口了,显示online表明成功。

如果要做其他tcp端口、http子域名的内网穿透,详细参见生成的软件中包含的文档。

四、Linux系统下的使用方法

Linux的使用方法也很简单,有写好的对应的shell脚本。

1.    将生成的服务端文件夹上传到您想放的位置,上传拷贝文件可以用sftp工具,比如winscp或者FileZilla
2.    进入到服务端所在文件夹,给ngrokd服务端程序、shell脚本加上可执行属性
    chmod a+x ./ngrokd
    chmod a+x ./start_ngrok_server.sh
3.    执行脚本启动服务端
    ./start_ngrok_server.sh
4.    如果客户端也是选的Linux系统,上传文件,进入到客户端所在文件夹,给ngrok程序、shell脚本加上可执行属性
    chmod a+x ./ngrok
    chmod a+x ./StartSubdomainwx.sh
    chmod a+x ./StartPort25565.sh
5.    启动http隧道运行
    ./StartSubdomainwx.sh
     启动tcp隧道运行
    ./StartPort25565.sh

五、使用过程中可能的疑问解答

见生成文件夹中的《ngrok服务器搭建过程问题集锦 》

《启动多端口指南》

软件的下载链接http://www.hongzaosoft.cn/downloadngrok.html

Windows搭建ngrok服务器、Linux搭建ngrok服务器、支持用户管理相关推荐

  1. Linux下VsFTP和ProFTP用户管理高级技巧 之一

    Linux下VsFTP和ProFTP用户管理高级技巧   FTP服务时互联网上比较古老的一种应用,至今Interner应用面非常广泛,但令管理员头痛不已的是其用户管理,既多且杂,如何解决这一问题呢?使 ...

  2. linux系统下删除vsftp用户,Linux下VsFTP和ProFTP用户管理高级技巧 之一

    Linux下VsFTP和ProFTP用户管理高级技巧 FTP服务时互联网上比较古老的一种应用,至今Interner应用面非常广泛,但令管理员头痛不已的是其用户管理,既多且杂,如何解决这一问题呢?使用M ...

  3. Linux学习(一)用户管理

    Linux学习(一)用户管理 用户管理 新建用户 指定密码 查看用户 查看创建了哪些用户 切换用户 删除用户 查看登录用户信息 设置普通用户具有root权限 修改用户 用户组管理命令 新增组 删除组 ...

  4. linux系统搭建局域网邮件,Linux局域网邮件服务器搭建

    随着企业信息化的普及,国内大部分企事业单位都有属于自己的局域网邮件服务器,如何在Linux局域网内搭建邮件服务器,实现邮件的收发.我们就给大家介绍一下怎样用U-Mail邮件服务器软件来搭建局域网邮件服 ...

  5. 搭建p2p文件服务器,linux 搭建 p2p 服务器

    linux 搭建 p2p 服务器 内容精选 换一换 简要介绍React(有时叫"React.js"或ReactJS)是一个为数据提供渲染为HTML视图的开源JavaScript库. ...

  6. 阿里云服务器Linux搭建Socket5

    Linux搭建Socks5代理服务器 下面笔者将用SS5在阿里云服务器上的Linux搭建一台Socks5 Proxy Server,具体过程如下: 1.首先,编译安装SS5需要先安装一些依赖组件 yu ...

  7. linux如何测试ftp服务器,linux下FTP服务器的搭建

    1.FTP服务器的简介 关于ftp的介绍,大家也一定不陌生了.我就直接把百度百科上的介绍拿过来,和大家一起温习一下概念. FTP 是File Transfer Protocol(文件传输协议)的英文简 ...

  8. linux安装sendmail服务器,linux下Sendmail 服务器的搭建(图文)

    Sendmail 服务器的搭建 搭建sendmail服务器之前我们往往需要域名服务器的支持,需要在域名服务器中添加mx邮件交换记录.这里我的邮件服务器地址是192.168.0.2域名是mail.ben ...

  9. 分发服务器linux,Linux-LVS分发服务器

    LVS(Linux Virtual Server)负载均衡集群 LVS集群系统是由3个部分组成:前端是负载均衡层,中间是服务器群组层,底端是数据共享存储层. 负载均衡层:位于集群的最前端,由一台或多负 ...

最新文章

  1. android 蓝牙找不到电脑,Android6.0 蓝牙搜索不到设备原因
  2. 【阿里Q3财报:阿里云去年营收破百亿,亚洲市场遥遥领先】
  3. 面试官问:为什么MySQL的索引不采用Kafka的索引机制
  4. python什么时候进入中国-python 3.4什么时候发布的
  5. Android多媒体开发
  6. node 微信授权 获取openid
  7. 微软(中国)CTO韦青:人工智能时代还没有真正到来
  8. mysql创建gbk库_MYSQL创建utf-8和GBK格式数据库
  9. 毕设日志——查看系统基本信息的linux命令
  10. 小爬爬1:jupyter简单使用爬虫相关概念
  11. 论文Mathtype公式自动编号
  12. python-excel-openpyxl读取数据---更新完善--1
  13. POI 4.1.2 word转html(保留样式及图片)
  14. iphone个系列尺寸_不同尺寸的iphone截图看起来一样大吗?
  15. 关于xpath解析网页中tbody问题
  16. Flutter 3.0 发布啦~快来看看有什么新功能-2022 Google I/O
  17. 单片机开发产品流程,照这个来没错!
  18. Android闹钟制作过程图,小学闹钟手工制作步骤详解(配图)
  19. 模型建模流程及逻辑回归案例
  20. 允许远程协助连接这台计算机 灰色

热门文章

  1. 工业级嵌入式主板助力物联网行业发展
  2. 安装sentinel LDK 驱动
  3. mysql命令创建用户_使用MySQL命令行新建用户并授予权限的方法
  4. Anchor-based和Anchor-free优缺点对比
  5. java gdal_gdal java环境配置
  6. pga是啥oracle,Oracle数据库内存体系 - PGA
  7. 深入浅出matplotlib(18):三个Y轴显示
  8. Arduino和Python实时监督控制和数据采集系统(SCADA)
  9. 如何利用迅雷来下载百度云文件?(此方法只适用于大文件需要启动百度网盘的客户端这种情况)...
  10. Maven基础——什么是Maven