最常见的使用场景就是微信开发:微信服务器需要主动调用或回调开发者服务器
如果把代码直接部署到公网服务器,开发阶段也不便于 debug,此时 ngrok 就派上用场了
当本地运行一个服务时,它能把本地的一个端口反向代理到公网,这样全世界都可以访问
Ngrok
先到官方注册一个账号:https://dashboard.ngrok.com/signup,它会给你一个 Authtoken
再把这个工具下载下来:https://ngrok.com/download
然后执行下面这个命令,这样就配置好了
./ngrok config add-authtoken YourAuthtoken
接下来启动,这样就可以在控制台看到分配的公网域名了(每次执行后,公网域名都会变化)
./ngrok http 2000
Pagekite
它也能实现和 ngrok 一样的效果(同样的,二者的速度都很慢,均不推荐)
其官网为:http://pagekite.net,按照下载页面的提示,很容易就弄好了,下面是效果图
SunnyNgrok
有良心网友免费搭建了一个 ngrok 服务器:http://www.ngrok.cc
下面是使用效果图(也可以自己搭一个 ngrok 服务,网上有教程)
2016-11-04 19:08 更新:今天同事推荐了另一个免费的:http://ngrok.2bdata.com,也挺好用
小米球Ngrok
2024-06-19 21:22 更新:ngrok.2bdata不能用了,ngrok.cc需要2.00元实名认证 + 最少10.00元/月的费用
最近又发现一个热心猿友提供的:https://www.xiaomiqiu.cn/,只需要0.5元的实名认证费,也很良心!
而且,它代理出去的公网地址,也是固定的 URL,并且也支持 HTTP / HTTPS / TCP,值得推荐!!
FRP
如果自己有一台具备公网 IP 的服务器,那么也可以搭一个 FRP(Fast Reverse Proxy) 服务
下载地址为:https://github.com/fatedier/frp/releases,它分为服务端和客户端
补充:v0.52.0 开始,不再推荐使用 INI 配置文件,改为 TOML 新格式,详细介绍如下:
https://www.cnblogs.com/huang-savesblog/articles/17787700.html
https://github.com/fatedier/frp/blob/master/conf/frps_full_example.toml
另外:网上也有免费的,但没试过效果:https://freefrp.net/docs
服务端配置
将下载的 frp_0.58.1_linux_amd64.tar.gz 解压后,删掉 frpc 和 frpc.toml(这俩是客户端用的)
然后修改:frps.toml
bindAddr = "0.0.0.0"
bindPort = 1097
auth.method = "token"
auth.token = "xuanyuvToken"
webServer.addr = "0.0.0.0"
webServer.port = 1098
webServer.user = "xuanyuv"
webServer.password = "xuanyuv_dashboard"
log.to = "/app/software/frp_0.58.1_linux_amd64/logs/frps.log"
log.level = "info"
log.maxDays = 30
vhostHTTPPort = 1096
vhostHTTPTimeout = 600
subDomainHost = "xuanyuv.com"
再编写一个启动脚本:startup.sh
#!/bin/bash
cd /app/software/frp_0.58.1_linux_amd64/
nohup ./frps -c ./frps.toml > /dev/null 2>&1 &
客户端配置
将下载的 frp_0.58.1_windows_amd64.zip 解压后,删掉 frps 和 frps.toml(这俩是服务端用的)
然后修改:frpc.toml(注意:这里是 frpC.toml,不是 frpS.toml)
serverAddr = "服务端的公网IP"
serverPort = 1097
auth.method = "token"
auth.token = "xuanyuvToken"
log.to = "C:/Users/xuanyu/Desktop/frp_0.58.1/logs/frpc.log"
transport.tls.enable = false
[[proxies]]
name = "pc-mpp-xuanyuv"
type = "http"
subdomain = "mpp"
localIP = "127.0.0.1"
localPort = 2000
再编写一个启动脚本:startup.bat
@echo off
title FRP内网穿透工具【玄玉制作】
color 02
echo;
echo FRP Client Startup......
call frpc.exe -c frpc.toml
服务端和客户端均启动后,通过 http://公网IP:1098/
就可以登录到 FRP 后台,查看代理情况等
然后访问:http://mpp.xuanyuv.com:1096/
,就能看到 http://127.0.0.1:2000/
对应的服务了
注意:代理本地 HTTP 服务时,还要将 mpp.xuanyuv.com 解析到服务端公网IP,且域名已备案