ngrok内网穿透工具

  1. 官网:https://ngrok.com/
  2. 账号:最好创建一个注册账号,获取验证authtoken,启动ngrok的时候设置authtoken可以使会话时间更长,不使用也可以,示例:
#设置 authtoken 可以让会话时常更长
ngrok authtoken authtoken码
  1. 下载及执行
#直接解压要/usr/local/bin目录,可以直接调用,不需要使用含路径的全名。
sudo unzip ~/Downloads/ngrok-v3-stable-darwin-amd64.zip -d /usr/local/bin
#配置authtoken,不用每次都要输入
ngrok config add-authtoken authtoken码

#启动代理, 8080 是需要对外映射的本地端口
ngrok http 8080
#在执行的显示内容中可以看到对外映射的公网地址。
  1. 反向代理
    • 注意⚠️:在使用外网域名访问的时候能够看到一个ngrok-skip-browser-warning的警告信息
      • 如果只是手工测试可以不做反向代理
      • 如果调试公众号调用,或者其他直接调用的场景,或者不希望出现警告信息,可以设置反向代理
    • 原理
      • 使用nginx把一个固定的网址映射到ngrok穿透后的外网域名
      • 去除ngrok-skip-browser-warning的警告信息
        • 配置nginx:header ngrok-skip-browser-warning=true 或 1
    • 优点:
      • 网址固定
      • 没有ngrok-skip-browser-warning的警告信息
    • 配置:
    #自己的域名: gzh-dev.rstone.com.cn
    #ngrok 启动后的域名: fa9c-2409-8a00-1a40-ec90-58d7-daf3-64bb-fb24.ngrok-free.app
    #建立nginx配置文件
    sudo -i
    cat > /docker-data/nginx/config/conf.d/gzh-dev.rstone.com.cn.conf << eof
    server {
        listen 80;
        server_name gzh-dev.rstone.com.cn;
    
        location / { 
    
            # regular forwarding headers
            proxy_set_header X-Forwarded-For $proxy_protocol_addr;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host fa9c-2409-8a00-1a40-ec90-58d7-daf3-64bb-fb24.ngrok-free.app;
    
            # this line does the actual trick
            proxy_set_header ngrok-skip-browser-warning 1;
    
            # forward!
            proxy_pass https://fa9c-2409-8a00-1a40-ec90-58d7-daf3-64bb-fb24.ngrok-free.app;
            proxy_ssl_server_name on;
        }
    }
    eof
    
    #测试配置文件
    docker exec nginx-vts nginx -t
    #重新加载配置文件
    docker exec nginx-vts nginx -s reload
    #测试
    curl http://gzh-dev.rstone.com.cn/ping