搭建ngrok服务器实现内网穿透,

2 篇文章 0 订阅
1 篇文章 0 订阅

 

服务器环境:

阿里云服务器一台(centos7.4-64)

二级域名一个(例:ngrok.xxx.com)

编译环境:

go语言,gcc编译

所需软件:

golang、gcc、git、ngrok

解析域名:

将ngrok.xxx.xom、*.ngrok.com解析到服务器上

1、安装软件:

(1)、安装gcc和git

直接使用yum安装

yum install gcc -y 
yum install git -y

(2)、安装golang

golang有两种安装方式,源码安装和二进制文件安装,这里使用的是二进制安装。

提示:使用源码安装1.4以上版本需要先安装1.4,然后再安装更高版本

下载地址:https://studygolang.com/dl

下载版本为:go1.11.linux-amd64.tar.gz

将文件解压到/usr/local下,解压完成后目录下会有一个go文件夹

tar -C /usr/local/ -zxvf go1.11.linux-amd64.tar.gz

设置go的环境变量,

vim /etc/profile

在最后一行后面添加下面两行内容(根据自己的安装目录设置目录路径)

export GOROOT=/usr/local/go 

export PATH=$PATH:$GOROOT/bin 

然后执行下面的命令,使环境变量立即生效

source /etc/profile

执行以下命令查看go环境是否安装成功

go version

 提示:若提示命令找不到,请查看路径和配置的路径是否一致,若执行其他命令都找不到,说明/etc/profile文件语法有误,请重新编辑文件。当然,这时编辑命令也不可用,请在命令的名称前加上/bin/+[command]。

(3)、安装ngrok

通过git下载ngrok

cd /usr/local
git clone https://github.com/tutumcloud/ngrok.git ngrok

 

2、搭建ngrok服务

(1)、生成证书

请注意将命令中的域名替换成自己的域名

cd /ngrok
mkdir cert
cd cert

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=gork.xxx.com" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=ngork.xxx.com" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

将原证书覆盖

yes|cp rootCA.pem ../assets/client/tls/ngrokroot.crt
yes|cp device.crt ../assets/server/tls/snakeoil.crt
yes|cp device.key ../assets/server/tls/snakeoil.key

(2)、服务器端编译和启动

(必须在ngrok目录下编译)

cd ../
make release-server

编译完成后ngrok的bin目录下会有一个ngrokd文件

./bin/ngrokd -tlsKey="assets/server/tls/snakeoil.key" -tlsCrt="assets/server/tls/snakeoil.crt" -domain="ngrok.xxx.com"  -httpAddr=":8080" -httpsAddr=":8081"

# -domain 访问ngrok是所设置的服务地址生成证书时那个

# -httpAddr http协议端口 默认为80

# -httpsAddr https协议端口 默认为443 (可配置https证书)

# -tunnelAddr 通道端口 默认4443

# -log 将终端信息重定向到知道的文件中,(最好加上,不然日志信息会一直在控制台输出)

提示:在上面的命令后加上&,可将服务器在后台运行

如何关闭服务?

                    使用netstat -tunpl查看服务的pid,通过kill [pid]可结束进程

(3)、客户端编译和使用

GOOS=windows GOARCH=amd64 make release-client

根据客户端的使用环境编译对应的客户端软件

#Linux 平台 32 位系统:GOOS=linux GOARCH=386

#Linux 平台 64 位系统:GOOS=linux GOARCH=amd64

#Windows 平台 32 位系统:GOOS=windows GOARCH=386

#Windows 平台 64 位系统:GOOS=windows GOARCH=amd64

#MAC 平台 32 位系统:GOOS=darwin GOARCH=386

#MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64

#ARM 平台:GOOS=linux GOARCH=arm

生成后ngrok的bin目录下会有对应的客户端文件目录

(4)、配置客户端启动配置文件

将客户端下载到自己使用的电脑中,使用前需要一个启动配置文件。

简单配置:

server_addr: "ngrok.xxx.com:4443"
trust_host_root_certs: false

域名就是你要使用的二级域名,端口号为服务器启动后的tunnelAddr端口,没有修改的话就是4443

(5)、客户端启动

客户端启动命令(客户端使用是在dos窗口中)

ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=test 80

# -config 启动配置文件路径

# -log 启动日志,若失败可在此文件查看失败原因

-subdomain 子域名前缀

若启动成功,则会出现以下内容:

其中http://test.ngrok.xxx.xom为外网访问域名,https对应的是https协议

 

3、配置服务器转发

以上访问外网域名的时候需要加上端口号,但是在我们希望使用默认的端口号。如果服务器使用的是nginx,则可通过配置nginx实现端口转发:

upstream nodejs {
    server 127.0.0.1:8080;
    keepalive 64;
}
server {
    listen 80;
    server_name *.ngrok.xxx.cn;
    access_log /home/logs/ngrok.xxx.cn.log;
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host  $http_host:8080;
        proxy_set_header X-Nginx-Proxy true;
        proxy_set_header Connection "";
        proxy_pass      http://nodejs;
    }
}

通过以上配置内容,新建一个server,然后重启nginx服务器,这样不需要携带端口号即可访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值