自己搭建ngrok服务器踩过的坑

因为要开发微信公众号,必须要有好用的内网穿透工具,找了一圈,虽然有收费的但是感觉还是不够稳定,干脆自己搭建一个试试看。
首先,必须有一台虚拟主机(本人阿里云和腾讯云各一台,作为比较)
然后主要搭建过程主要参考如下文档:
自己搭建ngrok实现内网穿透
其中有些不明白的还参考了
10分钟教你搭建自己的ngrok服务器
有几个坑要注意
1,ngrok必须编译后安装的,所以go语言环境必须先要安装
2,源代码主要是github上下载的,但是不知道为毛腾讯云下载的速度实在太慢。
一开始编译卡住了,以为是自己的问题,搞了半个多小时,才发现是卡在一个github的clone上了,实在没办法,我先本地全部clone了代码,然后再ftp上传了服务器,最终才编译通过的。
3,服务器编译时GOARCH的设置,犹豫了很久,我用uname -m命令看了我云服务器的芯片是x86_64的,但是不知道如何设置,最终根据文档设了

# 在ngrok目录执行
export GOOS=linux
export GOARCH=386
make release-server

4,配置端口和域名解析,我有一个域名,先增加了一个二级域名
ngrok.xxxx.com,然后开放了8000,444,和4443。
在本地运行了ngrok.bat后显示

Tunnel Status        Online

应该是已经成功了。
但是我通过http://sub.ngrok.xxx.com:8000 (sub是我的三级域名)访问我本地的服务器,一直报找不到服务器。搞到了半夜12点,觉得百思不得姐。
最终通过以下的文章搞定了三级域名的设置
超简单 图解 三级域名解析

到这里基本工作终于做完了,可以通过http://sub.ngrok.xxx.com:8000访问我本地服务器了。

接下来就是实用化的处理
1,后台运行,我就在usr/lib/systemd/system下面建立了一个ngrok.service的文件,内容如下:

[Unit]
Description=ngrok
After=network.target

[Service]
ExecStart=/prg/ngrok/bin/linux_386/ngrokd -domain="ngrok.xxxx.com" -httpAddr=":8000" -httpsAddr=":444"

[Install]
WantedBy=multi-user.target

然后用命令

systemctrl start ngrok.service

来启动服务,但是挣扎了2个小时,试了各种方法,都是没有启动起来。
通过 ps -aux | grep ngrok
完全找不到这个进程,只好最终放弃
在ngrok 目录下建立了一个ngrok.sh的文件,

#后台执行程序
nohup  /prg/ngrok/bin/linux_386/ngrokd -domain="ngrok.xxxx.com" -httpAddr=":8000" -httpsAddr=":444"> run.log 2>&1 &

通过运行这个bash文件终于在后台运行了程序。

还有一个棘手的问题是,公众号开发要求使用80或443端口,然而我那台云服务器的这两个端口已经被占用了,没办法,只有通过设置nginx服务器来达到目的,具体步骤可以参考以下的文章。
笔记】Nginx+Ngrok实现80端口服务器+80端口内网穿透
通过以上的所有步骤耗时5-6个小时,终于把能实用的内网穿透服务器给搞定了。
可以通过 http://sub.ngrok.xxx.com 直接访问本地服务器了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要搭建 ngrok 服务器,首先需要在本地安装 ngrok,安装完成后在命令行中输入 `ngrok authtoken <YOUR_AUTH_TOKEN>` 来设置认证令牌。 接下来,使用 `ngrok http <port>` 来启动服务,其中 <port> 是您要映射到公网的本地端口号。 例如,如果您的本地服务器运行在 80 端口上,则可以使用 `ngrok http 80` 启动服务。 启动后,将会得到一个公网 URL,可以将这个 URL 分享给其他人访问您的本地服务器。 注意:如果要使用自定义域名,需要购买 ngrok 高级版本。 ### 回答2: 搭建ngrok服务器是一种将内网服务暴露到公网的方法。首先需要在服务器上安装ngrok软件,可以通过官方网站下载对应的二进制文件。得到二进制文件后,解压并将可执行文件复制到系统的可执行路径下。 在服务器上创建一个用于存放ngrok配置文件和证书的目录,例如/opt/ngrok。在该目录下创建一个自定义的域名配置文件,例如ngrok.yml,用于配置需要暴露的服务和域名信息。在该文件中,我们需要配置tunnels部分,指定需要暴露的服务和端口号。 接下来,生成SSL证书用于支持HTTPS协议。运行以下命令: ``` # 生成CA私钥并自签名CA证书 $ openssl genrsa -out rootCA.key 2048 $ openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok" -days 3650 -out rootCA.pem # 生成服务器私钥和证书签名请求(CSR文件) $ openssl genrsa -out server.key 2048 $ openssl req -new -key server.key -subj "/CN=your-domain.com" -out server.csr # 使用CA私钥和签名请求生成服务器证书 $ openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 3650 ``` 将生成的证书文件(rootCA.pem和server.crt)放入ngrok服务器目录。 接下来需要配置ngrok客户端,将ngrok服务器的域名、端口和SSL证书配置到ngrok客户端中。在本地机器上下载和配置ngrok客户端,根据服务器上的域名和端口号进行配置。将生成的根证书rootCA.pem放入客户端的.ngrok文件夹里,并运行以下命令启动ngrok客户端: ``` $ ngrok client -config=ngrok.cfg -subdomain=subdomain your-service-host:port ``` 通过以上步骤,即可成功搭建ngrok服务器,实现将内网服务暴露到公网。接下来可以通过ngrok客户端访问公网上的服务,使用域名和端口号即可访问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值