有些时候,想让本地运行的flask程序让其他人查看或使用,或者测试本地的服务,需要外网能够访问。
那么首先要明确什么是外网访问这个问题。
搜索查阅其他文章,大多都提及了“将Flask服务器监听的主机地址设置为0.0.0.0时,就可以让服务器外网可见。”
但这句话只对了一半。
按此更改后,你的服务器还必须要运行在拥有公网IP的主机上,也就是你使用的电脑。
然而你连着公司的局域网不可能是公网ip,只是局域网内分配的一个ip,因此所谓的外网也只是你的电脑所在的局域网。
那么我们可以借助内网穿透/映射工具,例如ngrok,让外网上的朋友访问运行在你的笔记本上的程序。
-
安装ngrok
地址:https://ngrok.com/download
根据操作系统下载对应的压缩包
现在基本上都是64位的系统了吧 -
解压
爱解哪解哪,打开里面是一个exe程序
-
运行
因为Flask程序已经运行在本地5000端口,只需要启动ngrok服务,输入对应的端口即可建立映射。
双击运行ngrok.exe 输入ngrok http 5000,建立端口5000的隧道。
你会看到以下地址
Forwarding http://f001-111-164-239-71.ngrok-free.app -> localhost:5000
Forwarding https://f001-111-164-239-71.ngrok-free.app -> localhost:5000
f001-111-164-239-71.ngrok-free.app就是分配的外网地址
本地运行flask服务后即可通过该地址访问
与此同时,你还会看到以下两行
Session Status online
Session Expires 1 hours, 59 minutes
这是因为未注册账户每个会话只会维持2小时,过期后需要重新启动。
注册用户没有这个限制,注册相当简单,不再赘述。注册完成后需要执行下面的命令连接本地ngrok程序:
token在这里:
每次建立映射,ngrok都会分配一个随机子域的网址,如果你想拥有一个固定的域名,可以在这里配置:
至此,你就可以在自己的笔记本上启动你开发的flask服务,其他人可以通过外网访问了。