很多情况下,我们需要对客户延时做好的 demo、服务器放在家里或者公司没有公网,怎么实现外网访问?
这是我本地的一个演示地址,我要在外网访问需要怎么操作呢?
通过路由器的端口转发实现
1、进入路由器选择端口转发
2、添加转发信息
添加端口转发信息,外部端口使用 10000 内部端口是 80,也就是说外网通过 ip:10000 访问的时候实际上访问到的是 192.168.1.175:80 这个 ip 的 80 端口
在路由器里面可以看到我的外网 ip,或者在 http://www.ip138.com 也可以看到
只要让在外网的人通过 http://123.121.142.122:10000/ 就可以访问到我 192.168.1.175:80 这个端口里面的 php 文件了
如果想要进行 ssh 端口 或者 3389 远程访问也是一样的方式操作。
通过路由器的 dmz 方式实现
这里填写了我一个树莓派的地址,然后我通过在腾讯云服务器使用 ssh 配合我的外网 ip 登陆树莓派。只需要在腾讯云的服务器上输入以下命令就可以登陆我家里的树莓派。
ssh pi@123.121.142.122
通过上图已经可以看到我通过腾讯云的服务器使用 ssh 登陆到了我的树莓派里面。这种是在一级运营商拉的网线有公网 ip 的情况下可以通过路由器实现的外网访问内网服务。
注意:在做 http 服务的时候 80 端口是不能外网访问的,所以可以通过其他端口访问,例如我就用了 10000 端口在外网访问,但是在开发微信的时候这点还是不方便,微信只接受 80 或者 443
这些功能在你接入一级运营商的时候是可以用的,但是遇到二级运营商或者小区宽带的时候,这就很有心无力了。因为你从这些运营商得到的 ip 是一个内 ip,你自己路由器相当于一个二级路由器,所以在二级路由器端口转发但是在一级路由器并没有,也就是说类似住宅楼一样,你把你加的房门打开了,但是一楼大厅的大门没有打开,外面的人还是进不来。
那我们还有没有什么别的办法能让外网不需要加端口直接访问到 80 呢?答案是肯定有的。最简单的办法是通过 Sunny-Ngrok 实现,仅需要在平台注册账号密码设置好映射的信息,只要一条命令就能实现外网访问内网了。
1、打开 注册界面 注册一个账号
2、开通隧道
由于网站提供了 Ngrok 和 Frp 两种服务,因此用户需要自己选择想要开通的类型。
注意:详细阅读网站弹出来的提示,因为很重要
注意:详细阅读网站弹出来的提示,因为很重要
注意:详细阅读网站弹出来的提示,因为很重要
3、填写隧道信息
根据自己实际情况填写
隧道开通之后不能更换协议和服务器
隧道开通之后不能更换协议和服务器
隧道开通之后不能更换协议和服务器
4、下载客户端
返回首页下载客户端
遇到问题的时候可以观看使用教程哦,里面提供了比较详细的教程。选择自己开通的服务类型和操作系统版本下载。
网站有两种客户端,记得要匹配自己的开通服务类型
网站有两种客户端,记得要匹配自己的开通服务类型
网站有两种客户端,记得要匹配自己的开通服务类型
对于开发者建议开通 Ngrok、因为在做微信开发或者支付异步回调的时候可以通过 127.0.0.1:4040 实现请求查看和重发,对于开发人员来说比上传代码到服务器和写日志查看日志更省心省力省时间。
5、启动隧道
一定要观看官网教程,注意不通的服务类型有不通的启动方式区分,Windows 进入 cmd 命令启动不是双击;Linux 通过终端启动。
这个是我在平台上的配置
这个是我在 mac 的启动方式
启动成功的界面是这样的,我通过上面显示出来的地址就可以访问到我的路由器了,因为我的路由器 ip 是 192.168.1.1 我这里隧道映射的 ip 也是 192.168.1.1
这样就可以看到已经实现了外网访问内网的机器了。
如果是开发者通过 http://127.0.0.1:4040 可以得到更丰富的功能。
可以看到右边有一个再次请求和下面在内网返回的信息都已经返回回来了,在做异步支付的时候就可以在本地开发了,并且可以看到代码是哪里报错了。