windows下使用nginx+ngrok实现内网穿透进行开发调试

来源:赵克立博客 分类: 其它 标签:内网穿透发布时间:2019-08-28 11:10:03最后更新:2020-09-27 22:52:07浏览:1815
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2020-09-27 22:52:07
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

使用条件

1、有自己的外网windows服务器,安装ngrok服务端

2、有自己的域名,用于ngrok穿透访问使用

3、本机环境安装 Win32 OpenSSL v1.1.0f Light,用于自己生成域名证书

证书生成

确保环境里已经可以使用openssl,也就是安装上面的工具然后把bin路径加到环境变量里面,把里面ngrok.test.cn替换成你的域名

@echo off
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.test.cn" -days 5000 -out ngrokroot.crt
openssl genrsa -out snakeoil.key 2048
openssl req -new -key snakeoil.key -subj "/CN=ngrok.test.cn" -out device.csr
openssl x509 -req -in device.csr -CA ngrokroot.crt -CAkey rootCA.key -CAcreateserial -out snakeoil.crt -days 5000
rem delete not user file
del device.csr
del rootCA.key
del ngrokroot.srl
pause

运行后会在当前目录生成几个证书文件如下,

1908281566963800696770.png

把ngrokroot.crt放入client目录中,把snakeoil.crt和snakeoil.key放入server目录中,注意名字不要改

1908281566963936108380.png

服务器配置

服务器启动很简单一条命令就ok

@echo off
ngrokd.exe -domain="ngrok.test.cn"  -httpAddr=":6060" -httpsAddr=":6061" -tunnelAddr=":4443"

6060 6061分别为http和https的端口,因为我的服务器上这两个端口已经被别的服务占用,所以替换成这两个啦,后面的4443也可以设置成其它端口,根据自己情况

客户端连接

客户端需要一个配置文件ngrok.cfg,启动的时候要使用,如下

server_addr: "ngrok.test.cn:4443"
trust_host_root_certs: false

启动客户端

@echo on
cd %cd%
ngrok -config=ngrok.cfg -subdomain=bd 80

subdomain=bd是设置的子域,80为映射到本地电脑的服务端口,到此就可以直接使用bd.ngrok.test.cn:6060来访问本地电脑上的web服务啦,

这里也看到啦访问的时候带啦一个6060这个端口,如果不想带的话需要把服务器上的端口设置成80,但是我服务器上的端口已经被占用啦怎么办呢,下面有个方法,使用nginx反向代理来实现80端口访问,ngrokd的服务器端口还是用6060,但是可以在nginx的配置文件中添加上对*.ngrok.test.cn的域名的解析,把请求转发到服务器本机的6060端口来处理,如下

server {
        listen       80;
        server_name  *.ngrok.test.cn;
        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:6060;
                        proxy_set_header X-Nginx-Proxy true;
                        proxy_set_header Connection "";
                        proxy_pass      http://127.0.0.1:6060;
        }
}

这样就可以直接使用bd.ngrok.test.cn来访问啦

配置文件启动

server_addr: "ngrok.test.cn:4443"
trust_host_root_certs: false

tunnels:
  # #带auth
  # authweb:
  #   auth: "user:psw123"
  #   proto:
  #     http: 8080
  # #普通穿透
  # web:
  #   proto:
  #     http: 8080
  #带auth转发到别的IP和端口
  blog:
    # auth: "user:psw123"
    proto:
      http: 192.168.201.143:80

  #带auth转发到别的IP和端口
  test:
    # auth: "user:psw123"
    proto:
      http: 192.168.201.143:80
  # #tcp转发到ssh端口
  # ssh:
  #   proto:
  #     tcp: 22
  # #转发tcp
  # sshforward:
  #   proto:
  #     tcp: 192.168.2.202:22
  # #cname到别的域名
  # webcname:
  #   proto: http
  #   auth: "user:psw123"
  #   addr: 80
  #   hostname: demo.example.com

启动配置文件中所有服务

ngrok -config=config.cfg start-all

2009271601212129576026.png


启动单个服务

ngrok -config=config.cfg start blog

关闭日志

ngrok -log=none -config=config.cfg start blog

指定日志路径

ngrok  -log=E:/log/ngrok/ngrok.log -log-level=INFO -config=ngrok.cfg start blog


附件下载地址 https://download.csdn.net/download/z735579768/11631281


微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python