文章正文

阿里云centos7下使用ngrok实现内网穿透-单机

【文章】2020-04-23

简介阿里云centos7下使用ngrok实现内网穿透-单机

准备工作:

1.阿里云服务器一台

2.备案域名一个

相关工具:

远程连接工具:xshell 

安装ngrok

//安装go语言环境
yum install -y epel-release
yum install golang
//是否安装环境
go version
//ngrok,未安装git,手动后上传
cd /home
git clone https://github.com/inconshreveable/ngrok.git
//解压
unzip ngrok-master.zip
//配置ngrok访问域名
export NGROK_DOMAIN="xxx.com" 
//生成ngrok证书
cd ngrok-master
openssl genrsa -out rootCA.key 2048  
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.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 rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000 
//覆盖原有的证书
\cp rootCA.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
GOOS=linux GOARCH=amd64 make release-server #编译服务端
GOOS=linux GOARCH=amd64 make release-client  #编译客户端
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
//命令执行成功后,在bin下会生成两个文件
ngrok(客户端),ngrokd(服务端)
//服务端的启动,注意domain代表域名,那这个域名就是之前定义环境变量时的域名 千万不要错。
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="xxx.com" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"
 
参数说明:
#-domain 访问ngrok是所设置的服务地址生成证书时那个
#-httpAddr http协议端口 默认为80
#-httpsAddr https协议端口 默认为443 
#-tunnelAddr 通道端口 默认4443

启动日志略

二级域名的映射设置

image.png

客户端配置

将客户端ngrok

启动配置文件:

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

tunnels:
    sbm0:
        subdomain: ngroka
        proto:
            http: 80 
    sbm1:
        subdomain: adm
        proto:
            http: 80
    sbm2:
        subdomain: img
        proto:
            http: 80
    sbm3:
        hostname: "www.xxx.com"
        proto:
            http: 80
    sbm4:
        hostname: "xxx.com"
        proto:
            http: 80
    sbm5:
        remote_port: 2222
        proto:
            tcp: 22
    sbm6:
        subdomain: api
        proto:
            http: 80
    sbm7:
        subdomain: test
        proto:
            http: 80
    sbm8:
        subdomain: static
        proto:
            http: 80

nginx代理配置:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    #include /etc/nginx/conf.d/*.conf;
	
    
   ## 
   server {
       listen       80;
       server_name  xxx.com *.xxx.com;
       location / {
             proxy_redirect off;
             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_pass http://127.0.0.1:8090;
       }
  }

  server {
      listen       443;
      server_name  xxx.com *.xxx.com;
      location / {
             proxy_redirect off;
             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_pass http://127.0.0.1:8091;
     }
 }
}

启动脚本-start.sh

nohup ./ngrok -config=ngrok.cfg start sbm0 sbm1 sbm2 sbm3 sbm4 sbm5 &

打赏支持

感谢您的支持,加油!

打开微信扫码打赏,你说多少就多少

找书费时,联系客服快速查找!

扫码支持

在线客服8:30-22:30,若离线请留言!

获取教程,请联系在线客服!

扫码支持

在线客服8:30-22:30,若离线请留言!

热门阅读

找PDF电子书,太费时间?

  • 微信扫描二维码,让客服快速查找。
  • 在线客服8:30-22:30,若离线请留言!

    PDF电子书