windows下使用nginx+ngrok实现内网穿透进行开发调试
使用条件
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
运行后会在当前目录生成几个证书文件如下,
把ngrokroot.crt放入client目录中,把snakeoil.crt和snakeoil.key放入server目录中,注意名字不要改
服务器配置
服务器启动很简单一条命令就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
启动单个服务
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