搭建ngrok服务器之扩展

简介:

说明

了解本文之前,请先阅读前两篇博文。不然会感觉不知所云。本文主要是在前两篇基础上进行发散思维扩展及本博主遇到的一些问题。希望对其他人有帮助,让你少走弯路。

 

nginx端口转发

如果服务器80端口已经被占用了,可以利用nginx进行端口的转发,加上如下配置即可:

 

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

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
upstream ngrok {
server  127.0 . 0.1 : 8888 # 此处端口要跟 启动服务端ngrok 时指定的端口一致
keepalive  64 ;
}
server {
listen  80 ;
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_header X - Real - IP $remote_addr;
proxy_set_header X - Forwarded - For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host: 8888 ;   # 此处端口要跟 启动服务端ngrok 时指定的端口一致
proxy_set_header X - Nginx - Proxy true;
proxy_set_header Connection "";
proxy_pass http: / / ngrok;
}
}

重启nginx

service nginx reload

 

关于ngrok服务端

1
/ usr / local / ngrok / bin / ngrokd  - domain = "ngrok.XXX.com"  - httpAddr = ":8888"  - httpsAddr = ":8889"

# domain填写刚才生成证书时的 NGROK_DOMAIN

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

 

# 如果想要后台启动,执行以下命令(后台启动有多种方法,选择其一即可)

1
nohup  / usr / local / ngrok / bin / ngrokd  - domain = "ngrok.XXX.com"  - httpAddr = ":8888"  - httpsAddr = ":8889"  / dev / null  2 >& 1  &

 

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

vim /etc/rc.d/rc.local

1
/ 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

内容如下: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
server_addr:  "ngrok.XXX.com:4443"
trust_host_root_certs: false
tunnels:
     test:
         subdomain:  "test"  #定义服务器分配域名前缀
         proto:
         http:  80  #映射端口,不加ip默认本机
         https:  80
     web:
         subdomain:  "web"  #定义服务器分配域名前缀
         proto:
         http:  192.168 . 1.100 : 80  #映射端口,可以通过加ip为内网任意一台映射
         https:  192.168 . 1.100 : 80
     web1:
         hostname:  "ngrok.XXX.com"
         proto:
         http:  80
     web2:
         hostname:  "XXX.com"
         proto:
         http:  80
     ssh:
         remote_port:  50001  #服务器分配tcp转发端口,如果不填写此项则由服务器分配
         proto:
         tcp:  22  #映射本地的22端口
     ssh1:  #将由服务器分配端口
         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实例--管理--本实例安全组--配置规则--创建规则。 把服务端监听的三个端口放行就可以了。

clip_image002

 

 

go语言环境安装

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

 

wKiom1lDb67BasfGAADZJ_zU5Lo747.jpg-wh_50

下载完成后直接解压。

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

 

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

vim /etc/profile

 

export GOROOT=/usr/local/go

export PATH=$PATH:$GOROOT/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。



本文转自pizibaidu 51CTO博客,原文链接:http://blog.51cto.com/pizibaidu/1937401,如需转载请自行联系原作者

相关文章
|
10月前
|
弹性计算 容灾 定位技术
构建弹性高可用的云计算环境:ECS的扩展与高可用性设计
本文深入研究了云服务器ECS的自动伸缩和高可用性设计,重点关注了弹性伸缩原理与应用、自动伸缩策略、负载均衡器的使用,以及跨地域容灾架构的建立。通过实际代码示例,读者能够全面了解如何在云计算环境中实现弹性的资源管理和高可用性的应用架构。
365 0
|
10月前
|
缓存 负载均衡 NoSQL
山东布谷科技直播软件源码Nginx服务器横向扩展:搭建更稳定的平台服务
Nginx服务器横向扩展提高了[直播软件源码](https://developer.aliyun.com/article/1302799?spm=a2c6h.13148508.setting.15.65934f0e6yi0Cp)性能,使直播软件源码平台性容错性、负载能力、处理高并发能力等能力有了极大地提升,确保了平台向着更高心梗、更稳定的方向发展,并且这样,使用户的体验大大增加,增加用户黏性,增多了用户的数量。
山东布谷科技直播软件源码Nginx服务器横向扩展:搭建更稳定的平台服务
|
10月前
|
存储 弹性计算 安全
阿里云服务器的灵活可扩展,满足您不断变化的业务需求
阿里云服务器是由阿里巴巴集团一家全球领先的云计算服务提供商阿里云推出的一款云服务器产品。作为云计算行业的领军者,阿里云服务器提供了稳定可靠、高性能、安全可控的云计算解决方案。无论是个人开发者还是大型企业,阿里云服务器都能够满足各种业务需求。
133 0
|
存储 监控 安全
使用阿里云构建弹性可扩展的服务器less架构
在现代的软件开发中,构建弹性可扩展的架构是至关重要的。而阿里云提供了一种强大的方式来实现这一目标,那就是服务器less架构。服务器less架构使开发人员能够专注于编写代码,而不必关注底层的服务器管理和扩展性。在本文中,我们将探讨如何使用阿里云构建弹性可扩展的服务器less架构。
269 0
|
数据采集 网络协议 PHP
如何使用PHP的swoole扩展提高服务器并发能力
PHP的swoole扩展是一个高性能的网络通信框架,它可以让PHP开发者轻松地创建TCP/HTTP服务,来响应客户端的请求。但是,有些请求可能涉及到一些复杂和耗时的业务逻辑,如果在工作进程中直接处理,可能会影响服务器的并发能力。
167 0
如何使用PHP的swoole扩展提高服务器并发能力
|
消息中间件 关系型数据库 Shell
MacOS下的AMQP服务器以及PHP扩展搭建
MacOS下的AMQP服务器以及PHP扩展搭建
311 0
|
弹性计算
ECS内数据盘存在扩展分区无法按照正常方法扩容处理方法
ECS内数据盘存在扩展分区无法按照正常方法扩容处理方法
ECS内数据盘存在扩展分区无法按照正常方法扩容处理方法
|
Web App开发 弹性计算 安全
高校学生免费领用ECS 及扩展
1、高校学生免费领用ECS 2、使用 3.下载使用Xshell 和 Xftp 4、安装宝塔面板及使用 5、下载tomcat及部署项目
高校学生免费领用ECS 及扩展
|
存储 Kubernetes API
探索使用Kubernetes扩展专用游戏服务器:第3部分 - 扩展节点
探索使用Kubernetes扩展专用游戏服务器:第3部分 - 扩展节点
312 0
探索使用Kubernetes扩展专用游戏服务器:第3部分 - 扩展节点
|
Kubernetes 数据可视化 API
探索使用Kubernetes扩展专用游戏服务器:第2部分-管理CPU和内存
探索使用Kubernetes扩展专用游戏服务器:第2部分-管理CPU和内存
138 0
探索使用Kubernetes扩展专用游戏服务器:第2部分-管理CPU和内存