搭建ngrok服务器之扩展

[复制链接]

826

主题

826

帖子

446

积分

中级会员

Rank: 3Rank: 3

积分
446
分享到:
发表于 2022-8-11 13:20:41 | 显示全部楼层 |阅读模式
说明了解本文之前,请先阅读前两篇博文。不然会感觉不知所云。本文主要是在前两篇基础上进行发散思维扩展及本博主遇到的一些问题。希望对其他人有帮助,让你少走弯路。
nginx端口转发如果服务器80端口已经被占用了,可以利用nginx进行端口的转发,加上如下配置即可:

vim /usr/local/nginx/conf/vhost/ngrok.XXX.com.conf

内容如下:
upstreamngrok{server127.0.0.1:8888;#此处端口要跟启动服务端ngrok时指定的端口一致keepalive64;}server{listen80;server_name*.ngrok.XXX.com;access_log/data/wwwlogs/ngrok.XXX.com_access.log;error_log/data/wwwlogs/ngrok.XXX.com_error.log;location/{proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_headerHost$http_host:8888;#此处端口要跟启动服务端ngrok时指定的端口一致proxy_set_headerX-Nginx-Proxytrue;proxy_set_headerConnection"";proxy_passhttp://ngrok;}}重启nginx

service nginx reload

关于ngrok服务端/usr/local/ngrok/bin/ngrokd-domain="ngrok.XXX.com"-httpAddr=":8888"-httpsAddr=":8889"# domain填写刚才生成证书时的 NGROK_DOMAIN

# http和https端口可以自己指定,这里不采用80端口,是因为其他程序已经占用了,端口转发在上面nginx已经配置完成

# 如果想要后台启动,执行以下命令(后台启动有多种方法,选择其一即可)
nohup/usr/local/ngrok/bin/ngrokd-domain="ngrok.XXX.com"-httpAddr=":8888"-httpsAddr=":8889">/dev/null2>&1&

# 如果想要开机启动,在rc.local中添加以下内容,具体内容请根据自己情况自行调整
vim /etc/rc.d/rc.local

/usr/local/ngrok/bin/ngrokd-domain="ngrok.XXX.com"-httpAddr=":8888"-httpsAddr=":8889">/var/log/ngrok.log&关于ngrok客户端你编译出来的客户端和服务端是配套使用的,你可以把你的客户端分享给别人使用,别人只能连接你的服务器,别的服务器是连接不上的。

确保linux版ngrok有执行权限
chmod +x ngrok

在ngrok程序的同级目录下,编写配置文件
vim ngrok.cfg

内容如下:

server_addr:"ngrok.XXX.com:4443"trust_host_root_certs:falsetunnels:test:subdomain:"test"#定义服务器分配域名前缀proto:http:80#映射端口,不加ip默认本机https:80web:subdomain:"web"#定义服务器分配域名前缀proto:http:192.168.1.100:80#映射端口,可以通过加ip为内网任意一台映射https:192.168.1.100:80web1:hostname:"ngrok.XXX.com"proto:http:80web2:hostname:"XXX.com"proto:http:80ssh:remote_port:50001#服务器分配tcp转发端口,如果不填写此项则由服务器分配proto:tcp:22#映射本地的22端口ssh2:#将由服务器分配端口proto:tcp:21

启动ngrok

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

# 或者
./ngrok -config ngrok.cfg start test

#如果在配置文件里有配置多个端口映射,可以start多个

./ngrok -config ngrok.cfg start test ssh

# 如果出现问题连接不上,想在本地查看日志,可加上log参数
# ./ngrok -log ngrok.log -config ngrok.cfg start test

# 最终如果`Tunnel Status`显示`online`则表示成功了

服务端防火墙由于服务器上开启了防火墙,使用的是iptables,所以需要将上面的端口添加到白名单
一共3个,一个是ngrok自身的4443端口,还有自定义的8888 http端口,8889 https端口

vim /etc/sysconfig/iptables

添加以下内容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 4443 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8889 -j ACCEPT

重启iptables

service iptables restart

阿里云服务器设置如果你的服务器是阿里公有云ECS,那么你需要进行如下设置:管理控制台--ESC实例--管理--本实例安全组--配置规则--创建规则。 把服务端监听的三个端口放行就可以了。

go语言环境安装上篇中介绍了yum安装方法。此处是手动安装。根据自己的系统下载安装包,下载地址http://www.golangtc.com/download

下载完成后直接解压。
tar -zxvf go1.7.4.linux-amd64.tar.gz -C /usr/local

设置环境变量,可以根据自己需要调整路径。
vim /etc/profile

export GOROOT=/usr/local/go

export PATH=$PATHGOROOT/bin

export GOPATH=$HOME/go

export GOROOT_BOOTSTRAP=/usr/local/go

使变量生效
source/etc/profile

查看是否安装成功
go env

ngrok的交叉编译交叉编译:就是在一个平台上生成另一个平台上的可执行代码。

网上有人说:服务器上要编译windows客户端版本时,需要进行如下设置:
cd /usr/local/go/src

GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 ./make.bash

我在别的服务器测试过后,不用这样也行,直接按上篇的方法直接编译即可。

我按上面进行设置。反而会报这样的错:
go ./make.bash: eval: line 135: syntax error near unexpected token `(

ERROR: Cannot find /root/go1.4/bin/go.

Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.

报错原因:go新版本不是用C编写的,而1.4之前的是C编写的,所以需要先安装1.4的,才能编译1.6的,于是便先安装了1.4,再安装1.6。
云专线_海外IDC http://www.vecloud.com/

使用高级回帖 (可批量传图、插入视频等)快速回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
快速回复 返回顶部 返回列表