CentOS安装ngrok内网穿透

一:下载源码

mkdir ngrok #创建名称为ngrok的目录

#因为CentOS没有apt-get,所有CentOS可以使用yum命令下载git
apt-get update #更新包管理器
apt-get install git  #安装git

yum install git    -y     #安装git

git clone https://github.com/inconshreveable/ngrok.git  #将ngrok源代码克隆回本地

二:安装Go语言开发环境

yum install golang -y  #安装go语言

三:设置ngrok域名


#配置环境变量
export GOPATH=/root/tools/ngrok/ngrok/  #设置环境变量,Go语言的安装位置
export NGROK_DOMAIN="wangsai.net.cn"  #设置环境变量,ngrok域名

四:为域名生成证书

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

五:拷贝证书到指定位置

rm -rf ngrok/assets/client/tls/ngrokroot.crt        #删除旧的ngrokroot.crt
cp rootCA.pem ngrok/assets/client/tls/ngrokroot.crt  #复制rootCA.pem到assets/client/tls/并更名为ngrokroot.crt

rm -rf ngrok/assets/server/tls/snakeoil.crt            #删除旧的snakeoil.crt
cp server.crt ngrok/assets/server/tls/snakeoil.crt #复制server.crt到assets/server/tls/并更名为snakeoil.crt

rm -rf ngrok/assets/server/tls/snakeoil.key            #删除旧的snakeoil.key
cp server.key ngrok/assets/server/tls/snakeoil.key #复制server.key到assets/server/tls/并更名为snakeoil.key

六:编译

由于go语言的特性,在编译时直接生成机器码,所以在运行过程中并不需要go的环境(非托管应用)。在ngrok目录下,运行一下命令分别生成对应的客户端与服务端。

#win服务端
GOOS=windows GOARCH=386 make release-server 
#win客户端
GOOS=windows GOARCH=386 make release-client
#linux服务端
GOOS=linux GOARCH=386 make release-server
#linux客户端
GOOS=linux GOARCH=386 make release-client
#mac客户端
GOOS=darwin GOARCH=amd64 make  release-client

生成完成后,在工作目录的bin文件夹下,产生对应的文件。以编译windows平台为例,会产生“ngrok.exe”与“ngrokd.exe”这两个文件,前者客户端,后者需要运行在公网服务器上。

因为项目中引用了一些外部资源,生成会耗费一些时间,对网络也有一定的要求,太慢会中短

七:启动ngrok服务端

启动系统默认配置
./ngrokd -domain wangsai.net.cn
前台启动服务
./ngrokd -domain wangsai.net.cn -httpAddr :8080 -httpsAddr :8443
后台启动服务
nohup ./ngrokd -domain wangsai.net.cn -httpAddr :8080 -httpsAddr :8443 &

八:配置客户端

拷贝生成的ngrok.exe到本地计算机,并新建配置文件ngrok.cfg,内容为:

#默认的代理端口为4443
server_addr: "wangsai.net.cn:4443"
trust_host_root_certs: false

#启动客户端
ngrok.exe -subdomain ws -proto=http -config=ngrok.cfg 8080
#-subdomain ws    代表ngrok.wangsai.net.cn:4443的前置域名
#8080            代表本地的对外端口

nginx+ngrok实现内网穿透

因为80端口被nginx占用,决定使用nginx+ngrok实现内网穿透,让所有的流量都通过nginx的80端口,然后转发到ngrok上面,下面是我的nginx的配置文件

http {
include       mime.types;
default_type  application/octet-stream;
sendfile        on;
keepalive_timeout  65;    

server {
    listen       443;
    server_name  www.52wss.com;
    ssl                  on;
     ssl_certificate     /root/tools/key/214309621550488.pem;#配置证书位置
     ssl_certificate_key  /root/tools/key/214309621550488.key;#配置秘钥位置
     #ssl_client_certificate ca.crt;#双向认证
     #ssl_verify_client on; #双向认证
     ssl_session_timeout  5m;
     ssl_protocols  SSLv2 SSLv3 TLSv1;
     ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
     ssl_prefer_server_ciphers   on;
    location / {
         proxy_pass https://ws.52wss.com:8080;
         proxy_redirect off;
         client_max_body_size 10m; 
         client_body_buffer_size 128k;
         proxy_connect_timeout 90; 
         proxy_read_timeout 90; 
         proxy_buffer_size 4k;  
         proxy_buffers 6 128k;
         proxy_busy_buffers_size 256k;
         proxy_temp_file_write_size 256k;
    }
}
}

如果显示这个No requests to display yet错误

请检查域名解析是否有问题

微信公众号,欢迎扫码关注