前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >教你自己服务器搭建Ngrok

教你自己服务器搭建Ngrok

作者头像
Lcry
发布2022-11-29 16:55:38
3.3K0
发布2022-11-29 16:55:38
举报
文章被收录于专栏:Lcry个人博客

在前面写了有篇利用frp实现内网穿透,在此介绍另外一种,它的名字叫:Ngrok

官网:https://ngrok.com/ Github:https://github.com/inconshreveable/ngrok

一、为什么选择Ngrok? 1)提供免费内网穿透服务,免费服务器支持绑定自定义域名; 2)管理内网服务器,内网web进行演示; 3)本地WEB外网访问、本地开发微信、TCP端口转发; 4)无需任何配置,下载客户端之后直接一条命令让外网访问您的内网不再是距离. 5)更多功能等待你探索。

二、搭建所需: 1)VPS一台,作为中间服务器(推荐腾讯云、阿里云) 2)域名一个(最好是备案了的) 3)xshell、xftp类似远程服务器工具

三、服务端搭建: 1)演示系统为Centos7.2、主要防火墙开启后面所需要的端口,将域名解析到服务器IP、如:n.51it.wang,则需要把*.n.51it.wang和n.51it.wang都要解析到服务器IP。 远程登录服务器直接执行以下命令: yum install gcc git -y //按照依赖和git wget https://studygolang.com/dl/golang/go1.8.linux-amd64.tar.gz //下载Go源码包,或者直接yum install golang -y tar -zxvf go1.8.linux-amd64.tar.gz //解压Go源码包 vi /etc/profile //设置环境变量添加以下几行内容:

代码语言:javascript
复制
export GOROOT=你的go解压地址
export PATH=$PATH:$GOROOT/bin

source /etc/profile //环境变量生效 go version //查看go是否安装成功 git clone https://github.com/inconshreveable/ngrok.git //克隆ngrok项目 //下面生成ssl证书,直接复制粘贴

代码语言:javascript
复制
cd ngrok
NGROK_DOMAIN="n.51it.wang"
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 5000 -subj "/CN=$NGROK_DOMAIN" -out base.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 5000 -out server.crt

//下面复制证书,若提示覆盖直接输入Y

代码语言:javascript
复制
cp base.pem assets/client/tls/ngrokroot.crt 
cp server.crt assets/server/tls/snakeoil.crt  
cp server.key assets/server/tls/snakeoil.key  

make release-server release-client // 这一步骤等待时间较长,成功编译后,会在bin目录下找到ngrokd和ngrok这两个文件。

nohup ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="n.51it.wang" -httpAddr=":82" -httpsAddr=":8082" -tunnelAddr=":4443" > /dev/null 2>&1 & //后台运行ngrok

GOOS=windows GOARCH=amd64 make release-client //windows系统(编译完成后在ngrok/bin/windows_amd64下) 注: 如果是32位系统,GOARCH=386; 如果是64为系统,GOARCH=amd64 如果要编译linux,GOOS=linux;如果要编译window,GOOS=windows

到此Ngrok服务端部署完成。

四、客户端配置: 将服务器端生成的windows_amd64文件下载到windows机器上。 在同一目录下新建一个ngrok.cfg文件,写入一下内容:

代码语言:javascript
复制
server_addr: "你的域名:4443"
trust_host_root_certs: false
//若是要配置多个隧道可添加以下:
tunnels:
    www:
    proto: 
      http: "8080"
    mstsc:
        remote_port: 39001
        proto: 
        tcp: "127.0.0.1:3389"

启动客户端、cmd切换到目录下执行 ngrok.exe -config=./ngrok.cfg -subdomain aa 8080 //若是添加了多个配置启动为ngrok.exe -config=./ngrok.cfg start www mstsc 上面若需要在外网访问则是aa.n.51it.wang:82即可到内网的localhost:80

教你自己服务器搭建Ngrok
教你自己服务器搭建Ngrok

其他: http协议: ngrok.exe -config=./ngrok.cfg -subdomain aa -proto=http 8080 tcp协议: ngrok.exe -config=./ngrok.cfg -subdomain aa -proto=udp 8080

到此,客户端配置完成。

五、优化 1)若要使用服务器的80端口,但是服务器80端口已被其他业务端口占用,则可以才用nginx代理,下面提供一份nginx参考配置文件:

代码语言:javascript
复制
upstream ngrok {
    server 127.0.0.1:82;
    keepalive 64;
}
server {
    listen 80;
    server_name n.51it.wang *.n.51it.wang;
    access_log  /www/wwwlogs/n.51it.wang.log;
    error_log  /www/wwwlogs/n.51it.wang.error.log;
    proxy_set_header "Host" $host:82;
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host:82;
        proxy_pass_header Server;
        proxy_redirect off;
        proxy_pass  http://ngrok;

    }
    access_log off;
    log_not_found off;
}

记住修改完后重启nginx生效。

参考文章: https://blog.csdn.net/u010444106/article/details/80457985 https://www.javatang.com/archives/2018/04/17/05302345.html http://yangbingdong.com/2017/self-hosted-build-ngrok-server/index.html https://blog.csdn.net/thislirlu/article/details/53610418

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
ICP备案
在中华人民共和国境内从事互联网信息服务的网站或APP主办者,应当依法履行备案手续。腾讯云为您提供高效便捷的 ICP 备案服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档